我安装了VS SP1并尝试使用Entity Framework。
我从现有数据库创建了一个模式并尝试了一些基本操作。
大部分都很顺利,除了数据库模式更新。
我以各种基本方式更改了数据库:
- 添加了一个新表
- 删除了一个表
- 向现有表添加了一个新列
- 从现有表中删除了一列
- 更改了现有列的类型
前三个操作进行得很好,但是类型更改和列删除没有遵循数据库更改。
是否有办法从设计师那里使其正常工作?还是目前不支持?我还没有找到相关材料,但仍在搜索。
我安装了VS SP1并尝试使用Entity Framework。
我从现有数据库创建了一个模式并尝试了一些基本操作。
大部分都很顺利,除了数据库模式更新。
我以各种基本方式更改了数据库:
前三个操作进行得很好,但是类型更改和列删除没有遵循数据库更改。
是否有办法从设计师那里使其正常工作?还是目前不支持?我还没有找到相关材料,但仍在搜索。
我发现,总的来说,“从数据库更新模型”功能仍存在许多错误。
对我来说,关键是键 - 我从未对外键关系进行的任何修改或向表添加主键并使更新程序正常工作(即它将在生成的代码上给出编译错误),但要解决问题很简单,只需删除模型并重新导入(只需要一分钟)- 显然这不是理想的解决方案,但我从未因“新鲜”导入而失败过。
我处理这个问题的方式(包括你提到的所有事情,还有重命名列)是通过对数据库进行更改并使用EF Code First重新生成EF代码。
我不会为了方便而修改EF Code First类(包括关系的无意义命名列)。
如果生产数据库中存在约束数据,则没有设计师或ORM模式生成器能够对其进行更改。这就是为什么您应该始终首先检查您对数据库的更改是否可行,尝试在开发数据库上进行更改,然后调整您的代码以反映这些更改的原因。
你需要自己从设计器或XML文件中删除该列。
如前所述,您可以从设计器中删除该列。至于更改列的数据类型:只需从数据库刷新模型,然后转到表映射并选择您在DB中更改的列。右侧的值表示您的模型,令人奇怪的是,这不会自动更新,但只需选择右侧的列,然后转到属性并更改数据类型即可。它应该变成一个下拉菜单。
干杯。
Ruddy
我建立了一个类似于您所请求的应用程序。但我的解决方案太过复杂。 我会尝试告诉您;
你需要创建自己的数据库管理类,这些对象将负责创建、更新数据库模式(我手动创建了它)。
我看到了ADO.NET团队博客上的好文章和源代码,你也可以从这个博客下载EDMTools,它是开源的。你还可以将模型生成和更新例程从中实现到你的项目中。
最后,当你的模式发生变化时,你应该在运行时重新创建和绑定你的模型,并重建你的数据程序集。但你必须知道最重要的事情,你应该用松散耦合的方式将你的数据模型程序集与你的项目绑定(查看这个帖子)。
另一种方法是,你可以等待EF 4.0发布(现在是CTP 1),他们宣布将提供创建、删除、更新DatabaseScript函数。
祝你好运!