Linq to SQL オブジェクトにデータ注釈を実装しようとしています。.dbml ファイルが生成されますが、生成されたソース コードに触れずにオブジェクトにデータ注釈を追加する方法がわかりません。
オブジェクトの別の部分クラスにデータ注釈を追加しようとしましたが、それを認識せず、Intelli の意味もありません。
Linq to SQL オブジェクトにデータ注釈を実装しようとしています。.dbml ファイルが生成されますが、生成されたソース コードに触れずにオブジェクトにデータ注釈を追加する方法がわかりません。
オブジェクトの別の部分クラスにデータ注釈を追加しようとしましたが、それを認識せず、Intelli の意味もありません。
この質問に対する最初の回答で述べたように、インターフェイスを使用する必要があります。私の後に投稿された回答(承認済みとしてマークされた)は、クラスを使用すると述べました。これはそれほど良くありません。次の理由から、インターフェイスの方が適しています。
「User」というクラスの場合、そのインターフェイス(「IUser」など)を作成してから、部分的なUserクラスの定義を次のように更新します。
[MetadataType(typeof(IUser))]
public class User : IUser
次に、IUserインターフェイスで、適切なデータ注釈属性をプロパティに追加します。
[Required]
[StringLength(50, ErrorMessage = "Username cannot exceed 50 characters")]
string Username { get; set; }
「User」というクラスの場合、そのインターフェイス(「IUser」など)を作成してから、部分的なUserクラスの定義を次のように更新します。
[MetadataType(typeof(IUser))]
public class User : IUser
次に、IUserインターフェイスで、適切なデータ注釈属性をプロパティに追加します。
[Required]
[StringLength(50, ErrorMessage = "Username cannot exceed 50 characters")]
string Username { get; set; }
Linq to SQLは、オブジェクトクラスを部分として生成します。データアノテーションを実装する簡単な方法は、オブジェクトの独自の部分クラスを作成し、作成した部分クラスに[MetadataType(typeof(YourDataAnnotationClass))]を配置することです。
例:
// Linq to SQL Class
public partial class Article
{
public string Title { get; set; }
...... etc
}
検証するフィールドごとにメタデータを使用して独自のMetaDataクラスを作成します
public class MyMetaDataClass
{
[Required]
[Range(5,20)]
public string Title { get; set; }
}
メタデータを追加するObjectクラス(この場合はArticlesクラス)の部分クラスを作成します。
[MetadataType(typeof(MyMetaDataClass))]
public partial class Article { }
注:クラスで何も指定する必要はなく、メタデータタイプのみを指定します。
ありがとう、しかし問題はMSがMetadataTypeAttrubuteのプロトタイプを次のように定義することです
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public sealed class MetadataTypeAttribute : Attribute
したがって、クラスを使用する必要がありましたが、インターフェイスは使用しませんでした
チャイナフォレストリーから:李晓强xiaoqianglinsen@163.com(MSN)lixiaoqiang@webservice.com.cn