当使用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的数据。

当使用EF6和SQL Server 2012时,是否有替代引用表的方法?

如果您只是使用这些表作为查找,您可以像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();              
          }
     }
}

使用枚举当然有缺点,你必须重新编译你的应用程序来扩展或更改它们,所以数据库查找给你更多的灵活性。