ASP.net EF Codefirst Data Annotations를 사용하여 SQL Server에서 열을 varchar(max)로 설정하려면 어떻게 해야 합니까?
저는 엔터티 프레임워크 코드가 먼저 열을 사용하여 제 테이블을 만들 수 있는 올바른 구문을 찾으려고 웹을 검색했습니다: varchar(max).
이것이 제가 가진 것입니다.기본적으로 varchar(128)가 생성됩니다.varchar(max)는 어떻게 생성합니까?
[MaxLength]를 시도했지만 성공하지 못했습니다.
어떤 도움이라도 주시면 감사하겠습니다.감사합니다!
[Column(TypeName = "varchar")]
public string MediaDesc { get; set; }
[Column(TypeName = "varchar(MAX)")]
놀랍게도 가장 확실한 해결책은 효과가 있습니다.
그[MaxLength]
속성만 생성합니다.varchar
최대 길이가 MAX가 아닌 열(내 경우 SQL Server Express 2008 R2) - 8000입니다.
이것은 당신을 얻을 것입니다.nvarchar(max)
:
[StringLength(int.MaxValue)]
유니코드가 아닌 것을 강제로 적용하는 속성은 없다고 생각합니다(정말로 그렇게 하시겠습니까?), 그래서varchar(max)
DbContext를 수정해야 합니다.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Entity>().Property(x => x.MediaDesc).IsUnicode(false);
}
[MaxLength] 주석을 사용합니다.
[Column(TypeName = "varchar")]
[MaxLength]
public string MediaDesc { get; set; }
@Slauma 응답에 대한 업데이트.
에서 이와 같은 모든 문자열에 재정의 사용OnModelCreating
:
modelBuilder.Properties<string>().Configure(s =>
s.HasMaxLength(256).HasColumnType("nvarchar"));
다음과 같은 속성을 사용하여 속성을 수정합니다.
[Column(TypeName = "nvarchar(MAX)")]
public string CaseComment { get; set; }
또는 다음과 같습니다.
modelBuilder.Entity<YourClass>()
.Property(b => b.CaseComment)
.HasColumnType("nvarchar(MAX)");
이로 인해 예외가 발생할 수 있습니다.Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
열이 올바른 데이터 유형임에도 불구하고 Entity Framework는 여전히 열이 옳다고 생각합니다.nvarchar(256)
그리고 오류를 던집니다.DbEntityValidationException
.
이 문제를 해결하려면 대신 다음을 사용합니다.
[Column(TypeName = "nvarchar(MAX)")]
[MaxLength]
public string CaseComment { get; set; }
또는
modelBuilder.Entity<YourClass>()
.Property(b => b.CaseComment)
.HasColumnType("nvarchar(MAX)")
.HasMaxLength(null);
[Column(TypeName = "varchar(MAX)")]
결과적으로 데이터베이스에 varchar(Max)가 생성됩니다.사용자 정의 컨벤션에서 MaxLength 문자열을 100으로 설정하는 경우
modelBuilder
.Properties<string>()
.Configure(c => c.IsUnicode(false).HasMaxLength(100));
MaxLength 특성을 포함해야 합니다.[Column(TypeName = "varchar(MAX)"), MaxLength]
그렇지 않은 경우 데이터베이스에 varchar(MAX)가 표시되지만 유효성 검사는 100자를 초과합니다.
언급URL : https://stackoverflow.com/questions/11235847/how-do-i-set-a-column-in-sql-server-to-varcharmax-using-asp-net-ef-codefirst-d
'programing' 카테고리의 다른 글
jquery 중지 하위 이벤트 트리거링 (0) | 2023.07.29 |
---|---|
1452 - 하위 행을 추가하거나 업데이트할 수 없습니다. (0) | 2023.07.29 |
Spring Data Rest - 내포된 특성별 정렬 (0) | 2023.07.29 |
바디에 설정된 CSS3 그레이디언트 배경은 늘어나지 않고 반복됩니까? (0) | 2023.07.29 |
프로젝트에 동일한 이름의 모듈이 있는 경우 표준 라이브러리에서 가져오려면 어떻게 해야 합니까?(Python이 모듈을 찾는 위치를 어떻게 제어할 수 있습니까?) (0) | 2023.07.29 |