2010-02-17 84 views
4

我很擔心這樣做,因爲我的更改會在dbml文件再次自動生成時被覆蓋(就像他們經常這樣做)。將DataAnnotations添加到自動生成的DBML類? MVC 2.0 ASP.NET

我正在考慮做一個部分班,寫出相同的屬性來註釋它們,但擔心它會抱怨重複,而我甚至不能實驗的原因將我帶到我的問題的第二部分...

...這,在我的dbml文件清單可擴展箭頭丟失,右擊並選擇「查看代碼」只顯示一個空的部分類,如下...

Partial Class FPDataContext 
End Class 

所以,我甚至無法查看課程!任何人有任何想法可以解決這些問題嗎?

我使用VS2010 RC和我只是開發一個MVC 2.0應用,在那裏我希望能夠使用UI註釋,比如[UIHint("RelativeDateTime")]

編輯:

問題解決了,感謝史蒂夫,這裏是我的VB版的編輯作爲一個例子...

Imports System.ComponentModel.DataAnnotations 

<MetadataType(GetType(CommentMetaData))> _ 
Partial Public Class Comment 
End Class 

Public Class CommentMetaData 
    <UIHint("PostedSince")> _ 
    Public Property DateAdded() As DateTime 

End Class 

回答

7

可以使用DataAnnotations的「夥伴類的功能在你的類型定義的驗證。這基本上意味着你定義在另一個類的驗證,但你也可以定義這個類「內部」您現有的類:

[MetadataType(typeof(CommentMetaData))] 
public partial class Comment { 
} 

public class CommentMetaData { 
    [StringLength(50),Required] 
    public object Name { get; set; } 
    [StringLength(15)] 
    public object Color { get; set; } 
    [Range(0, 9999)] 
    public object Weight { get; set; } 
} 
+0

打我到它,+1 – Kirschstein 2010-02-17 14:42:31

+0

你能告訴我什麼ProductMD是指?我假設這是即時通訊嘗試註釋的dbml類?感謝隊友這是一個很大的幫助,尤其是因爲我不需要與自動生成的類進行交互或觸摸。 – 2010-02-17 14:43:28

+0

好的,說我有一個「評論」類型,我會怎麼做,是否有一個類嵌套的原因? – 2010-02-17 14:44:33

1

一個可能的解決方案是http://linqtometadataaddin.codeplex.com

LINQ的元數據外接程序是一個Visual Studio 2010工具,該工具爲dbml文件生成 metadatatype類。這個插件是建議爲 Asp.net DynamicData應用程序