C# 在使用EF6和SQL Server 2012时,是否有参考表的替代方案?

C# 在使用EF6和SQL Server 2012时,是否有参考表的替代方案?,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我有一个数据库,其中包含许多引用表,例如ContentType,其中该表只有两列Id和Name。这些引用表提供外键的数据,例如内容表中的外键,它们经常用于Where子句中 我们先使用代码,但自己手工编写SQL,而不是使用数据库迁移功能 除了将此数据放入可能只有2行或3行的引用表之外,还有其他方法吗。仍然可以使用EF6或6.1的东西。请注意,我仍然希望将数据分开,而不是混合数据,例如,我不希望将WorkType的数据与ContentType混合在同一个表中 如果您只是使用这些表作为查找,您可以按照

我有一个数据库,其中包含许多引用表,例如ContentType,其中该表只有两列Id和Name。这些引用表提供外键的数据,例如内容表中的外键,它们经常用于Where子句中

我们先使用代码,但自己手工编写SQL,而不是使用数据库迁移功能


除了将此数据放入可能只有2行或3行的引用表之外,还有其他方法吗。仍然可以使用EF6或6.1的东西。请注意,我仍然希望将数据分开,而不是混合数据,例如,我不希望将WorkType的数据与ContentType混合在同一个表中

如果您只是使用这些表作为查找,您可以按照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();              
          }
     }
}
公共枚举内容类型
{
文本,
形象,,
视频
音频
}
公开课内容
{
公共int Id{get;set;}
公共内容类型{get;set;}
}
公共类TestContext:DbContext
{
公共数据库集内容{get;set;}
公共静态列表GetImages()
{
使用(var context=newtestcontext()
{
返回context.Contents
.Where(c=>c.ContentType==ContentType.Image)
.ToList();
}
}
}

使用枚举当然有一个缺点,那就是您必须重新编译应用程序以扩展或更改它们,因此数据库查找为您提供了更大的灵活性。

您当前使用的是
Enum
s,还是要先使用代码(手动拧出代码)还是先使用数据库(将设计器视图与
.edmx
文件一起使用)模型?我们首先使用代码,但创建我们自己的SQL,而不是使用模型来更新数据库。不,我们没有使用枚举?这是我们可以采取的方法吗?这是否意味着枚举是在数据库中创建的,我可以加入它?我不知道如何确切地首先使用代码(我只与设计师一起做过)但我确信EF支持将您在中描述的两列表映射到C#
枚举
。如果您知道如何进行映射,请随时发布您自己问题的答案,解释如何进行映射。您到底想要实现什么,或者与当前实现相关的困扰您的是什么?这仅仅是因为e是只有2行或3行的表吗?我有大量2-3行的表。因此,我只想确定,除了将所有数据合并到一个表中并具有rowType列之外,是否还有其他选项可用于在数据库中存储这些数据。