我正在尝试使用 Code First 方法创建数据库。当我运行以下代码时,出现以下异常。我定义的字段有什么问题吗?我们怎样才能克服这一点?
例外:
更新条目时出错。有关详细信息,请参阅内部异常。
内部异常:
“无效的对象名称'dbo.Dinners'。
注意:我的数据库中没有这样的表(晚餐)。该代码应该创建表。如EF Code First: Cannot connect to SQL Server中所述,我只是给出了连接字符串来标识服务器。我应该更改连接字符串吗?
连接字符串:
string connectionstring = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";
LibraryReservationSystem 数据库已经是现有的数据库。它没有桌子。我期待 EF 创建表。
我从工作中的 LINQ 2 SQL 应用程序复制的连接字符串。我需要对其进行任何更改以提供给 EF 吗?
更新
当我包含以下代码时,异常发生了变化。现在它说 - “无效的对象名称'dbo.Dinner'。”。它现在抱怨餐桌;不是餐桌。
protected override void OnModelCreating(DbModelBuilder modelbuilder)
{
modelbuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
原始代码
static void Main(string[] args)
{
string connectionstring = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";
using (var db = new NerdDinners(connectionstring))
{
var product = new Dinner { DinnerID = 1, Title = 101 };
db.Dinners.Add(product);
int recordsAffected = db.SaveChanges();
}
}
using System.Data.Entity;
namespace LijosEF
{
public class Dinner
{
public int DinnerID { get; set; }
public int Title { get; set; }
}
public class RSVP
{
public int RSVPID { get; set; }
public int DinnerID { get; set; }
public virtual Dinner Dinner { get; set; }
}
//System.Data.Entity.DbContext is from EntityFramework.dll
public class NerdDinners : System.Data.Entity.DbContext
{
public NerdDinners(string connString): base(connString)
{
}
public DbSet<Dinner> Dinners { get; set; }
public DbSet<RSVP> RSVPs { get; set; }
}
}
参考