写入DataContext

时间:2011-12-05 15:20:40

标签: c# datacontext

我有一个功能。此函数使用IEnumerable<Customer>Customer作为实体)。该函数需要做的是告诉DataContext(其中有一个Customers的集合作为属性),Customers属性需要被IEnumerable<Customer>中传递的DomainContext.Customers属性覆盖。我无法使用分配,因为{{1}}无法分配,因为它是只读的。

我想我不清楚我在问什么,所以我想我应该说......我该怎么做?所以我们有DataContext.Customers(类型为System.Data.Linq.Table),它想要用System.Collections.Generic.IEnumerable替换。我不能将后者分配给前者,因为DataContext的属性是只读的。但必须有办法。

修改:这是一张图片:

enter image description here

进一步修改:是的,此图片没有类型&#39;客户&#39;的集合。而是“连接”。但这并不重要,它们都是从链接的SQL数据库中的表创建的。所以有dc.Connections,dc.Customers,dc.Media等等。

提前致谢。

4 个答案:

答案 0 :(得分:0)

您的收藏品IsReadonly。当您在viewstate中有一个接口时,或者在序列化该集合的其他位置时,可能会发生这种情况。如果它是反序列化的,那么它只是readonly,因为它没有接口实现它的功能。

答案 1 :(得分:0)

我假设您想要在IEnumerable中具有相同UPDATE个实体的上下文中CustomerID个实体,您可以使用此答案中的方法:

https://stackoverflow.com/a/4212581/559144

答案 2 :(得分:0)

不是DataContext.SubmitChanges() ??

回答版本 (对于那些努力看到这个修辞问题是建议答案的人):

这是DataContext.SubmitChanges()

答案 3 :(得分:0)

这是正常的,大多数时候收藏应该是只读的。

您只需要清除该集合,然后使用foreach添加每个新项目:

private void SetItems(IEnumerable<MyObject> _NewItems)
{
    myCollection.Clear();
    foreach (MyObject newItem in _NewItems)
    {
        myCollection.Add(newItem);
    }
}