2013-06-09 5 views
7

빠른 질문 ...C# 데이터 주석

내가 인터페이스의 표기법을 넣으면

...

말 [필수]

수 나는 ommit 그에 대한 C# 클래스에 표기 그 속성?

즉, 수 I ... 인터페이스에서 데이터 주석을 배치

Interface IFoo 
{ 
    [Required] 
    string Bar {get; set;} 
} 

Class Foo : IFoo 
{ 
    string Bar {get; set;} 
} 

또는 난 그냥 인터페이스의 표기법을 넣고이 작업을 수행 할 필요합니까 ...

Interface IFoo 
{ 
    string Bar {get; set;} 
} 

Class Foo : IFoo 
{ 
    [Required] 
    string Bar {get; set;} 
} 
+0

수업에 참가해야합니다. 참조 : http://bradwilson.typepad.com/blog/2011/08/interface-attributes-class-attributes.html –

답변

7

작동하지 않습니다. 그런 다음이로 바 문자열인지 분명하지 않다

interface IFoo 
{ 
    [Required] 
    string Bar { get; set; } 
} 

interface IBar 
{ 
    string Bar { get; set; } 
} 

class Foo : IFoo, IBar 
{ 
    public string Bar { get; set; } 
} 

을 : http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/1748587a-f13c-4dd7-9fec-c8d57014632c/

간단한 설명은 다음과 같이 코드를 수정하여 찾을 수 있습니다 : 다음 링크에서 이유에 대한 설명이있다 필요 여부. 하나 이상의 인터페이스를 구현하는 것이 타당하므로.

+1

@Mathew Jibin 당신 말이 맞습니다. 샘플을 수정했습니다. –

0

데이터 주석은 작동하지 않지만 그 이유는 알 수 없습니다.

먼저 EF 코드를 사용하는 경우 Fluent API를 사용하여 데이터베이스를 만들 때이 동작을 강제 실행할 수 있습니다. 데이터베이스 만 EF 나 Data Annotation을 사용하는 다른 시스템이 아닌 제약 조건을 검사하기 때문에 이는 실제 해결책이 아닌 해결 방법입니다.

내가

public partial class MyDbContext : DbContext 
{ 
    // ... code ... 

    protected override void OnModelCreating(DbModelBuilder dbModelBuilder) 
    { 
     dbModelBuilder.Types<IFoo>().Configure(y => y.Property(e => e.Bar).IsRequired()); 
    } 
} 

그것은 IFoo를 구현하는 클래스를 인식 할 때 애드 팍의 속성을 구성하는 것이 시스템을 말하는 그것을했다.