实体框架将s添加到我的.dbo中

时间:2012-08-03 15:55:11

标签: asp.net-mvc visual-studio-2010

我正在使用" 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 个答案:

答案 0 :(得分:11)

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

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

答案 1 :(得分:4)

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

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

看起来有一种方法可以禁用多元化,请参阅Entity Framework Code First naming conventions - back to plural table names?

答案 2 :(得分:4)

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

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

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

答案 3 :(得分:2)

using System.Data.Entity.ModelConfiguration.Conventions;

namespace MVCDemo.Models

     {
         public class EmployeeContext : DbContext

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

为了完整性@ forty-two