我想實現數據註釋到我的Linq到SQL對象。生成.dbml文件,我不知道如何在不觸及生成的源代碼的情況下向對象添加數據註釋。ASP.NET MVC,Linq到SQL數據註釋驗證
我試圖將數據註釋添加到對象的單獨部分類,但它不識別它,也沒有Intelli感。
我想實現數據註釋到我的Linq到SQL對象。生成.dbml文件,我不知道如何在不觸及生成的源代碼的情況下向對象添加數據註釋。ASP.NET MVC,Linq到SQL數據註釋驗證
我試圖將數據註釋添加到對象的單獨部分類,但它不識別它,也沒有Intelli感。
正如我在我對這個問題的原始答案中所說的,你應該使用一個接口。我後面發佈的答案(標記爲Accepted)表示使用一個類。這不太好。接口是由於以下原因,一個更好的選擇:
對於一個叫做「用戶」的類,爲它創建一個接口「IUSER」),然後更新您的部分用戶類的定義如下:
[MetadataType(typeof(IUser))]
public class User : IUser
然後,在您IUSER接口,添加適當的數據註釋屬性的屬性:
[Required]
[StringLength(50, ErrorMessage = "Username cannot exceed 50 characters")]
string Username { get; set; }
對於被叫,說「用戶」類,如下所示創建一個接口爲它(說「IUSER」),然後更新您的部分用戶類的定義:
[MetadataType(typeof(IUser))]
public class User : IUser
然後,在你IUSER接口,添加適當的數據註釋屬性的屬性:
[Required]
[StringLength(50, ErrorMessage = "Username cannot exceed 50 characters")]
string Username { get; set; }
LINQ到SQL生成對象類作爲部分。實現數據註釋的簡單方法是創建您自己的部分對象類,將[MetadataType(typeof(YourDataAnnotationClass))]放置在您創建的部分類上。
例子:
// Linq to SQL Class
public partial class Article
{
public string Title { get; set; }
...... etc
}
創建元數據你自己的元數據類要驗證
public class MyMetaDataClass
{
[Required]
[Range(5,20)]
public string Title { get; set; }
}
創建要添加元數據的Object類的分部類的每個領域,本例文章分類:
[MetadataType(typeof(MyMetaDataClass))]
public partial class Article { }
注意:你不需要指定任何東西在類中,只是元數據類型。
baddie,你缺乏清晰度 – 2010-02-17 14:11:37
謝謝,但問題是M小號定義MetadataTypeAttrubute的原型
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public sealed class MetadataTypeAttribute : Attribute
那麼,你只好用類而不是接口
從中國 林李:李曉強 [email protected](MSN) lixiaoqiang @ webservice.com.cn
它甚至可以與界面一起工作,無論定義如何。 – 2010-02-26 11:31:26
我不能使它既不工作也不接口類:(我試圖添加IgnoreDataMember到一些我在WCF項目中的部分類的自動生成的屬性 – 2014-09-23 03:42:27
我真的很喜歡這種方法,除了我不能添加[綁定(排除=「ID」)]屬性的接口,所以我不得不把它放在類。這是有效的,但元數據現在在類和接口之間進行分割。 – palmsey 2010-02-09 21:50:36
但是我應該怎麼做,如果我在模型中有一些額外的領域?例如,我有額外的'確認密碼'字段。如果我把這個字段放在接口中,編譯器不會將這個字段傳遞出去,因爲Linq到SQL類中沒有這樣的字段。 – kseen 2011-11-24 10:41:58
但是,如何自動生成這些屬性? dbml擁有生成它們所需的一切。我有20個表格,每列有數十列...我不會試圖手動保持這一點。任何人都有解決方案? – 2012-08-11 19:11:57