【发布时间】:2011-03-21 09:48:44
【问题描述】:
我在 Global.asax 中使用以下代码:
DbDatabase.SetInitializer<MyDBContext>
(new DropCreateDatabaseIfModelChanges<MyDBContext>());
但它似乎不起作用。
虽然我的模型已更改并且我正在尝试使用新添加的表格之一,但它只是说找不到该表格。
Invalid object name 'dbo.TableName'.
如果我运行它,它似乎可以工作,并且正在创建表:
DbDatabase.SetInitializer<MyDBContext>(new DropCreateDatabaseAlways<MyDBContext>());
它确实更新了我的数据库。
我做错了什么?
【问题讨论】:
-
不,我的意思是 IncludeMetadataConvention。你删除了吗?您的数据库中有 EdmMetadata 表吗?
-
顺便说一句。 “模型”和“表格”是什么意思?
-
模型是指我的项目中的一个或多个实体。例如 public class ObjectName { [Key] public int Id { get;放;我所说的表是指在我的 SQL 数据库中创建的表。
-
原来是master数据库的用户权限。奇怪的是,使用 DropCreateDatabaseAlways 不需要主数据库的权限,而 IfModelChanges 则需要。
-
@reinder:非常有趣。我不知道。将其发布为您问题的答案。我会赞成它。顺便提一句。这是否意味着它的 SQL 抛出了被 EF 吞噬的异常?
标签: c# entity-framework ef-code-first entity-framework-4.1