0

私はデータベースからEFにこのクラスを持っています

public partial class STUDENT
{
    public short STUDENTID { get; set; }
    public string NAME { get; set; }
    public string FAMILY { get; set; }

    public virtual CLASS CLASS { get; set; }
}

public partial class CLASS
{
    public CLASS()
    {
        this.STUDENTs = new HashSet<STUDENT>();
    }

    public short CLASSID { get; set; }
    public string CLASSNAME { get; set; }

    public virtual ICollection<STUDENT> STUDENTs { get; set; }
}

public partial class VALIDNAMES
{
    public string VALIDNAME { get; set; }
}

この名前がVALIDNAMESレコードにないstudent.nameにデータを強制的に挿入できないようにします。多くのページでnameプロパティを使用したいので、モデルレイヤーでこれを実行したいので、このレイヤーでこの検証を行います。

一方、モデルレイヤーでLINQを使用したいのですが、変更セットを使用してEFで生成されたクラスを取得することはできますか?

4

1 に答える 1

0

VALIDNAMESテーブルのVALIDNAME列を参照するSTUDENTテーブルのNAME列に外部キー制約を設定してみることができます。

SQL Serverを使用していると仮定すると、データベースに対して次のようなものを実行する必要があります。

ALTER TABLE [dbo].[STUDENT]  WITH CHECK ADD  CONSTRAINT [FK_student_valid_name] FOREIGN KEY([NAME])
REFERENCES [dbo].[VALIDNAMES] ([VALIDNAME])
GO

また、[STUDENT]。[NAME]列をNOT NULL(ユーザーが名前を入力できないようにNULL)として指定し、[VALIDNAMES]。[VALIDNAME]を一意のインデックス/主キーとして設定する必要がある場合もあります。

このように、検証はアプリケーションコードではなくDBMSによって行われます。

于 2013-03-11T05:05:47.553 に答える