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; }
}

我希望强制用户不能在 student.name 上插入该名称不在 VALIDNAMES 记录中的任何数据。我想在模型层中执行此操作,因为我想在许多页面上使用 name 属性,因此我希望在该层上进行此验证。

另一方面,我想在模型层上使用 LINQ,或者是否可以更改设置并获取 EF 生成的类?

4

1 回答 1

0

您可以尝试在 STUDENT 表中引用 VALIDNAMES 表的 VALIDNAME 列的 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 回答