如何编写DbContext类。

时间:2014-10-17 13:04:55

标签: c# sql-server database asp.net-mvc-3

如果我有一个名为STOREitems的数据库,并且我在该数据库标题PRICES中有一个表,并且模型名称是Price,我会写这样的吗?

public class STOREitemsDBContext : DbContext
{
    public DbSet<Price> PRICES { get; set; }
} 

我参与了一个MVC教程,现在我正在尝试使用我已经访问的现有数据库自己做事。该教程没有解释如何编写一个DB上下文类,它只是简单地给了我并说明了它的作用。

2 个答案:

答案 0 :(得分:1)

您必须为上下文添加构造函数,您可以在其中设置connectionstring

像:

public class STOREitemsDBContext : DbContext
{
    public STOREitemsDBContext():base("Connectionstring")           
    {

    }
    public DbSet<Price> PRICES { get; set; }
}    

在App.config中,您必须添加一个连接字符串,如:

      

现在您可以将值保存在DB

STOREitemsDBContext sidbcontext = new STOREitemsDBContext();
Price price = new Price(10.10);
sidbcontext.Price.Add(price);
sidbcontext.SaveChanges();

应该适合你

答案 1 :(得分:1)

如果您要使用现有数据库,则需要关闭上下文中的数据库初始化。

public class StoreItemsContext : DbContext
{
    public StoreItemsContext()
        : base("YourConnectionStringName")
    {
        Database.SetInitializer<StoreItemsContext>(null);
    }

    // DbSet's here
    publlic DbSet<Price> Prices { get; set; }
}

注意:类和属性名称应该是首字母大写的首字母。

如果您的表名与实体类名的默认实体框架约定不匹配,则为复数。然后,您需要明确告诉EF将数据映射到/来自哪个表:

[Table("PRICES")]
public class Price
{
    ...
}

对于这个特定的实体,如果没有它,你应该没事,但是我用它来提供一个例子。