从 Web 作业使用 EF6 查询 SQL 时,查询失败,因为它尝试获取表的复数版本



我的代码如下所示:

public static void DoSomething(TextWriter log)
{
log.WriteLine("Hey man! I'm running!");
try
{
using (MyDBContext context = new MyDBContext())
{
MemberMaster mm = context.MemberMaster.SingleOrDefault(m => m.MemberMasterId == 1);
if (mm != null)
{
log.WriteLine(string.Format("MemberMasterId = {0}, Username = {1}", mm.MemberMasterId, mm.UserName));
}
else
{
log.WriteLine("Could not find Member with MembermasterId = 1");
}
}
}
catch (Exception ex)
{
log.WriteLine(ex.Message);
}
log.WriteLine("Done!");
}

MyDBContext.cs看起来像这样:

public class MyDBContext : DbContext
{
public MyDBContext() : this("MyDb")
{
}
public MyDBContext(string connectionName) : base(connectionName) { }
public DbSet<MemberMaster> MemberMaster { get; set; }
} 

我尝试添加一个模型生成器来删除复数名称,但这只会导致有关数据库上下文已更改的错误。首先使用代码...等。。等。。。

有没有更好的方法可以做到这一点?Web 作业通过 AZure 使用.ZIP文件进行部署,并驻留在与我的网站相同的应用服务中。

我通过覆盖 OnModelCreation 来关闭集合和表的复数,以保持两者的名称相同,并且没有问题:

public class MyDBContext : DbContext
{
static MyDBContext()
{
Database.SetInitializer<DbContext>(null);
}
public MyDBContext() : this("MyDb")
{
}
public MyDBContext(string connectionName) : base(connectionName) { }
public DbSet<MemberMaster> MemberMaster { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>();
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
} 

最新更新