我在数据库的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生成的类?
答案 0 :(得分:0)
您可以尝试在STUDENT表的NAME列上设置引用VALIDNAMES表的VALIDNAME列的外键约束。
假设您使用的是SQL Server,则需要对数据库执行类似的操作:
ALTER TABLE [dbo].[STUDENT] WITH CHECK ADD CONSTRAINT [FK_student_valid_name] FOREIGN KEY([NAME])
REFERENCES [dbo].[VALIDNAMES] ([VALIDNAME])
GO
您可能还需要将[学生]。[NAME]列指定为NOT NULL
(因此您的用户无法输入NULL
名称),并将[VALIDNAMES]。[VALIDNAME]设置为唯一索引/主键。
这样,验证由DBMS而不是您的应用程序代码完成。