14

我目前正在使用“Entity Framework DbContext”,但没有找到 towars.dbo 的异常。这很奇怪,因为在我的网站上我一直在询问 towar.dbo 但没有 towars.dbo 你知道问题出在哪里吗?

- InnerException    {"Invalid object name 'dbo.Towars'."}   System.Exception {System.Data.SqlClient.SqlException}

我关于 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; }
    }
4

4 回答 4

14

将以下行添加到您的上下文中:

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
于 2012-08-03T16:07:02.990 回答
8

您可以通过使用 fluent APITowar覆盖类中的OnModelCreating方法来告诉 EF 映射到表,如下所示:DBContext

public class EFDbContext : DbContext
{
   protected override void OnModelCreating(DbModelBuilder modelBuilder)
   {
      modelBuilder.Entity<Towar>().ToTable("Towar");
   }
}

现在 EF 将寻找Towartable 而不是Towars. 如果您没有创建这些表,那么您还有其他一些问题。

于 2012-08-03T16:02:47.827 回答
5

EF Code First 自动将表名复数。使用[Table]属性将实体显式映射到表名:

[Table("Towary")]
public class Towary
{
   // Whatever properties
}

看起来也有一种方法可以禁用复数,请参阅实体框架代码优先命名约定 - 回到复数表名?.

于 2012-08-03T15:59:45.403 回答
3
using System.Data.Entity.ModelConfiguration.Conventions;

namespace MVCDemo.Models

     {
         public class EmployeeContext : DbContext

         protected override void OnModelCreating(DbModelBuilder modelBuilder)
         {
             modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
         }
}

为了完整起见@四十二

于 2017-05-12T05:21:41.847 回答