我有一个现有的数据库,我想用EF4.0构建一个新的应用程序
某些表没有定义主键,因此当我创建新的实体数据模型时,我收到以下消息:"表/视图TABLE_NAME没有定义主键,也没有推断出有效的主键.此表/视图已被排除.要使用该实体,您需要检查您的架构,添加正确的密钥,并取消注释".
如果我想使用它们并修改数据,我是否必须在这些表中添加PK,或者是否有解决方法以便我不必?
我在我的应用程序中使用EF.
我尝试保存\将新记录插入映射表
并得到以下错误:
Unable to update the EntitySet 'UsersLimitationToCountry' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.
我应该自己在edmx中定义它吗?怎么样?
我有一个Model-First实体模型,它包含一个链接到视图的Customer表,该视图从单独的数据库中获取客户详细信息.Customer表和View之间的关系是一对多,我在Customer实体和View实体上都有一个导航属性.
当我尝试使用context.Customers.DeleteObject(cust)执行删除并调用context.SaveChanges()时出现错误:
无法更新EntitySet的'ViewEntity',因为它具有DefiningQuery并且没有[DeleteFunction]元素存在元素来支持当前操作.
我尝试过设置On Delete Cascade和None,两者都生成相同的错误.
编辑:没有太多的代码可以展示,但是你去了:
Customer selectedCust = (Customer)dgvCustomers.SelectedRows[0].DataBoundItem;
if (selectedCust != null)
{
if (MessageBox.Show(String.Format("Are you sure you want to delete Customer {0}?", selectedCust.CustomerID.ToString()),
"Customer Delete Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// TODO - Fix this
this.ReportSchedDBContext.Customers.DeleteObject(selectedCust);
this.ReportSchedDBContext.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud) 我刚开始用Code First查看数据库视图...并尝试决定是否应该使用它们.
这里 Ladislav建议对表和Db-View使用NotMapped继承父(我的视图只添加子实体的总和)......但是如何使用CF迁移?我真的想用它们.
此外...导航属性将适用于Db-View实体?
有没有办法将数据直接保存到Db-View实体(和它的表)?