当使用EF6和SQL Server 2012时,是否有替代引用表的方法?
本文关键字:引用 方法 是否 EF6 SQL 2012时 Server | 更新日期: 2023-09-27 17:54:28
我有一个数据库,有许多参考表,如ContentType,其中表只有两列Id和Name。这些参考表为外键(例如Content表)提供数据,它们经常用于Where子句
我们首先使用代码,但是我们自己手工编写SQL,而不是使用数据库迁移功能。
是否存在将这些数据放入可能只有2或3行的引用表的替代方法?一些在EF6或6.1下仍然可以工作的东西。请注意,我仍然希望保持数据分开,而不是混合数据,例如,我不想在与ContentType相同的表中混合WorkType的数据。
如果您只是使用这些表作为查找,您可以像Scott Chamberlain建议的那样用枚举替换它们。你可以用实体框架代码来做,首先像这样:
public enum ContentType
{
Text,
Image,
Video,
Audio,
}
public class Content
{
public int Id { get; set; }
public ContentType { get; set; }
}
public class TestContext : DbContext
{
public DbSet<Content> Contents { get; set; }
public static List<Content> GetImages()
{
using (var context = new TestContext()
{
return context.Contents
.Where(c => c.ContentType == ContentType.Image)
.ToList();
}
}
}
使用枚举当然有缺点,你必须重新编译你的应用程序来扩展或更改它们,所以数据库查找给你更多的灵活性。