RPD*_*RPD 9 asp.net-mvc visual-studio-2010
我使用"实体框架DbContext",此刻我有异常towars.dbo未找到.这很奇怪,因为在我的网站上我总是询问towar.dbo但没有towars.dbo你知道哪里有问题吗?
- InnerException {"Invalid object name 'dbo.Towars'."} System.Exception {System.Data.SqlClient.SqlException}
Run Code Online (Sandbox Code Playgroud)
关于Towar的所有事情(当然我的程序中的不同之处):
public class ProductController : Controller
{
//
// GET: /Product/
public ITowarRepository repository;
public ProductController(ITowarRepository productRepository)
{
repository = productRepository;
}
public ViewResult List()
{
return View(repository.Towar);
}
}
public interface ITowarRepository
{
IQueryable<Towar> Towar { get; }
}
public DbSet<Towar> Towar { get; set; }
public class EFTowarRepository : ITowarRepository
{
public EFDbContext context = new EFDbContext();
public IQueryable<Towar> Towar
{
get { return context.Towar; }
}
}
public class Towar
{
[Key]
public int Id_tow { get; set; }
public string Nazwa { get; set; }
public string Opis { get; set; }
public decimal Cena { get; set; }
public int Id_kat { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
For*_*Two 11
将以下行添加到您的上下文中:
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
Run Code Online (Sandbox Code Playgroud)
EF Code First 自动将表名复数化。使用[Table]
属性将实体显式映射到表名:
[Table("Towary")]
public class Towary
{
// Whatever properties
}
Run Code Online (Sandbox Code Playgroud)
看起来也有一种方法可以全局禁用复数,请参阅实体框架代码优先命名约定 - 回到复数表名?.
您可以使用流利的API Towar
覆盖类中的OnModelCreating
方法,以使EF映射到表,DBContext
如下所示:
public class EFDbContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Towar>().ToTable("Towar");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,EF将寻找Towar
table而不是Towars
。如果您没有创建这些表,那么您还有其他问题。
归档时间: |
|
查看次数: |
8084 次 |
最近记录: |