IEditableCollectionView.AddNew()抛出ArgumentNullException

时间:2010-06-07 20:57:47

标签: silverlight entity-framework ria

在使用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不允许我在没有满足数据库约束的情况下生成新项目?如果我需要从用户那里获得主键,这有什么意义呢?

我可以控制应用程序的所有层,因此也欢迎有关数据库设计的建议。

1 个答案:

答案 0 :(得分:0)

好的,问题解决了。我使用这个界面的原因是因为我在论坛中阅读了它。我没有意识到我可以轻松地使用DataView而不使用接口转换来实现结果,DataView是一个(可能是暂时的)视图,提示您的数据在提交后会是什么样子,更具体地说,它看起来像是什么样的从字面上看,在视觉控制上。代码更改如下:

        var target = new Web.LocatorProduct()
        {
            Locator = LocatorID,
            Product = NewProduct.Text.ToUpper()
        };

        ProductSource.DataView.Add(target);

很简单。