EF CTP5错误:对象名称无效

Dej*_*n.S 4 entity-framework-4 entity-framework-ctp5 asp.net-mvc-2

我在scottgu的博客上关于EF代码第一个CTP5的示例,但我得到了错误

System.Data.SqlClient.SqlException:无效的对象名称'dbo.Products'.

这是我得到的代码.

<add name="CTP5Context"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|EFCTP5.mdf;User Instance=true"
     providerName="System.Data.SqlClient" />


public class CTP5Context : DbContext 
{
    public DbSet<Product> Products { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public string ProductName { get; set; }
    public int Amount { get; set; }
}



var context = new CTP5Context();
        var products = context.Products;            

        return View(products);
Run Code Online (Sandbox Code Playgroud)

我有点无能为力我在博客中做了同样的事情,这不是我第一次使用EF(但是CTP5 tho),我是在忽视什么?

小智 7

如果您的表名是数据库中的Product,请尝试以下操作:

[Table("Product", SchemaName = "dbo")]
public class Product
{
    public int Id { get; set; }
    public string ProductName { get; set; }
    public int Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

要使用该Table属性,您需要添加以下using语句:

using System.ComponentModel.DataAnnotations;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!它对我有用.


Ahm*_*eza 5

我有同样的问题,但我做了2次更改,它对我有用.我更改了连接字符串(添加了初始目录)

<add name="CTP5Context"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\northwind.mdf;User Instance=true;initial catalog=Northwind"
     providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

在Global.asax中,我在Application_Start()中添加了以下行

Database.SetInitializer<Northwind>(new System.Data.Entity.DropCreateDatabaseAlways<Northwind>());
Run Code Online (Sandbox Code Playgroud)

  • 如果您首先处理代码,那么这很好,但如果您尝试映射到现有数据库,这将无法正常工作. (2认同)