在使用DomainContext的Silverlight RIA的上下文中,代码如下:
private void AddProductButton_Click(object sender, RoutedEventArgs e)
{
var target = (Web.LocatorProduct)((IEditableCollectionView)ProductSource.DataView).AddNew();
target.Locator = LocatorID;
target.Product = NewProduct.Text.ToUpper();
((IEditableCollectionView)ProductSource.DataView).CommitNew();
}
由于产品为空,在AddNew(),CreateIdentity()中进一步向上抛出ArgumentNullException(生成的方法)。 Product和LocatorID组合为主键。
我猜EF不允许我在没有满足数据库约束的情况下生成新项目?如果我需要从用户那里获得主键,这有什么意义呢?
我可以控制应用程序的所有层,因此也欢迎有关数据库设计的建议。
答案 0 :(得分:0)
好的,问题解决了。我使用这个界面的原因是因为我在论坛中阅读了它。我没有意识到我可以轻松地使用DataView而不使用接口转换来实现结果,DataView是一个(可能是暂时的)视图,提示您的数据在提交后会是什么样子,更具体地说,它看起来像是什么样的从字面上看,在视觉控制上。代码更改如下:
var target = new Web.LocatorProduct()
{
Locator = LocatorID,
Product = NewProduct.Text.ToUpper()
};
ProductSource.DataView.Add(target);
很简单。