Linq to SQLオブジェクトにデータアノテーションを実装しようとしています。 .dbmlファイルが生成され、生成されたソースコードに触れることなくデータアノテーションをオブジェクトに追加する方法がわかりません。LinqからSQLへのデータアノテーションのバリデーション
オブジェクトの別の部分クラスにデータ注釈を追加しようとしましたが、認識できない、インテリセンスがありません。その後、というクラスについては
Linq to SQLオブジェクトにデータアノテーションを実装しようとしています。 .dbmlファイルが生成され、生成されたソースコードに触れることなくデータアノテーションをオブジェクトに追加する方法がわかりません。LinqからSQLへのデータアノテーションのバリデーション
オブジェクトの別の部分クラスにデータ注釈を追加しようとしましたが、認識できない、インテリセンスがありません。その後、というクラスについては
私がこの質問に対する私の元の答えで言ったように、あなたはインターフェースを使うべきです。答えは、授業を利用すると言った鉱山(Acceptedとマークされています)の後に投稿されました。これはあまり良くありません。インタフェースは、次の理由のためのより良いオプションです:
「ユーザー」と呼ばれるクラスの場合は、その後、「たIUser」)、および以下のようにあなたの部分Userクラスの定義を更新:
[MetadataType(typeof(IUser))]
public class User : IUser
次に、あなたたIUserインターフェースでは、適切なデータ注釈は、プロパティに属性を追加:
[Required]
[StringLength(50, ErrorMessage = "Username cannot exceed 50 characters")]
string Username { get; set; }
、「ユーザー」と言う、それのためのインターフェイスを作成する(「たIUser」を言う)、および以下のようにあなたの部分Userクラスの定義を更新:
[MetadataType(typeof(IUser))]
public class User : IUser
次に、あなたの中にIUserインターフェイスで、プロパティに適切なデータ注釈属性を追加します。
Linq to SQLは、オブジェクトクラスを部分的に生成します。データアノテーションを実装する簡単な方法は、オブジェクトの独自の部分クラスを作成し、作成した部分クラスに[MetadataType(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; }
}
を検証したい各フィールドのメタデータを使用して独自のメタデータクラスを作成します。この場合記事クラス:
[MetadataType(typeof(MyMetaDataClass))]
public partial class Article { }
注:何も指定する必要はありませんクラス内では、メタデータ型だけです。
baddie、あなたには分かりません –
おかげで、問題はMです李晓强 [email protected](MSN) lixiaoqiang @:Sだから
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public sealed class MetadataTypeAttribute : Attribute
としてMetadataTypeAttrubuteのプロトタイプを定義するには、クラスを使用しますが、
中国 森リーからをインターフェースないしなければなりませんでしたwebservice.com.cn
定義に関係なくインターフェイスでも動作します –
私はそれもインターフェイスもクラスも動作させることはできません:(ImはIgnoreDataMemberをいくつかのWCFプロジェクトでの私の部分クラスの自動生成プロパティ –
私はインターフェイスに[Bind(Exclude = "ID")]属性を追加できないことを除いて、このアプローチが本当に好きです。クラス。これはうまくいくが、メタデータはクラスとインタフェースの間で分割されるようになった。 – palmsey
私のモデルに余分なフィールドがある場合はどうすればよいですか?例えば、私は追加の 'Confirm Password'フィールドを持っています。私がこのフィールドをインターフェイスコンパイラに入れると、LinqベースのSQLクラスにそのようなフィールドがないので、これを渡すことはありません。 – kseen
これらの属性は自動的にどのように生成されますか? dbmlには、それらを生成するために必要なものすべてがあります。私はそれぞれに数十の列で20のテーブルを持っています...私は手動でそれを維持しようとするつもりはありません。誰にでも解決策がありますか? –