标签: entityset

EntitySet - 是否有一个理所当然的IList.Add没有设置分配?

向大多数列表添加项目有3种方法...

  • 通常通过直接的公共API方法 Add(SomeType)
  • 通过通用IList<T>.Add(T)接口
  • 通过非通用IList.Add(object)接口方法

你通常期望他们的行为或多或少相同.然而,LINQ EntitySet<T>是......在3.5和4.0上都很奇怪; 该IListAPI 不会标志设定为"分配" -其他两种机制 -这听起来微不足道,但它是因为它极大地影响系列化重要(即导致其跳过)的样板代码.

例:

EntitySet<string> set1 = new EntitySet<string>();
set1.Add("abc");
Debug.Assert(set1.Count == 1); // pass
Debug.Assert(set1.HasLoadedOrAssignedValues, "direct"); // pass

EntitySet<string> set2 = new EntitySet<string>();
IList<string> typedList = set2;
typedList.Add("abc");
Debug.Assert(set2.Count == 1); // pass
Debug.Assert(set2.HasLoadedOrAssignedValues, "typed list"); // pass

EntitySet<string> set3 = new EntitySet<string>();
IList untypedList = set3;
untypedList.Add("abc");
Debug.Assert(set3.Count == 1); // pass
Debug.Assert(set3.HasLoadedOrAssignedValues, "untyped list"); // FAIL
Run Code Online (Sandbox Code Playgroud)

现在......这让我感到非常惊讶; 以至于我花了2个多小时跟踪代码以隔离发生的事情.所以... …

.net c# linq entityset linq-to-sql

40
推荐指数
2
解决办法
3188
查看次数

RIA Services EntitySet不支持"编辑"操作

我在RIA服务(VS2010Beta2)中迈出了第一步,我遇到了这个问题:创建了一个EF模型(没有POCO),它上面的通用存储库和一个RIA服务(托管在ASP.NET MVC应用程序中)并试图获取数据从ASP.NET MVC应用程序:运作良好.下一步:Silverlight客户端.获得了对RIAService(通过其上下文)的引用,查询了存储库的所有记录并将它们也引入了SL应用程序(使用此代码示例):

private ObservableCollection<Culture> _cultures = new ObservableCollection<Culture>();
public ObservableCollection<Culture> cultures
{
  get { return _cultures; }
  set
  {
    _cultures = value;
    RaisePropertyChanged("cultures");
  }
}
Run Code Online (Sandbox Code Playgroud)

....

//Get cultures            
EntityQuery<Culture> queryCultures = from cu in dsCtxt.GetAllCulturesQuery()
                                             select cu;
loCultures = dsCtxt.Load(queryCultures);
loCultures.Completed += new EventHandler(lo_Completed);
Run Code Online (Sandbox Code Playgroud)

....

void loAnyCulture_Completed(object sender, EventArgs e)
{
  ObservableCollection<Culture> temp= 
  new ObservableCollection<Culture>loAnyCulture.Entities);
                AnyCulture = temp[0];
}
Run Code Online (Sandbox Code Playgroud)

问题在于:每当我尝试编辑记录的某些数据时(在本例中为第一条记录),我都会收到此错误:"Culture"类型的EntitySet不支持"编辑"操作.

我认为我做了一些奇怪的事情,并试图创建一个Culture类型的对象并为其赋值:它工作得很好!

我错过了什么?我必须声明一个EntitySet吗?我必须标记它吗?我必须......什么?

提前致谢

entityset wcf-ria-services

19
推荐指数
1
解决办法
2万
查看次数

通用列表到EntitySet转换

如何将a转换System.Collections.Generic.List<T>System.Data.Linq.EntitySet<T>

c# linq entityset

14
推荐指数
2
解决办法
1万
查看次数

LINQ-to-SQL +一对多+数据绑定删除

我使用LINQ-to-SQL从具有一对多关系的两个表的数据库加载数据(一个Recipe有许多成分).

我加载一个Recipe,LINQ将Ingredient对象检索到绑定到ListBox的EntitySet中.

如果我想从食谱中删除一些成分,我会得到一个"尝试删除食谱和成分之间的关​​系.但是,其中一个关系的外键(Ingredient.RecipeID)不能设置为null.

我通过在DBML文件中添加'DeleteOnNull ="true"'使用众所周知的解决方案解决了这个问题.但添加此设置仅在我们删除从DB检索到的Ingredient对象时才会消除此问题.

问题在于在代码中创建的成分对象(添加到配方中)并添加到成分的EntitySet集合中,然后在调用SubmitUpdates之前删除.然后,再次发生同样的异常.这通常发生在一个新的,未保存的食谱上,当用户向其添加成分,出错并从食谱中删除一种成分时.我将DeleteOnNull添加到DBML中的'Association Name ="Recipe_Ingredient"'行.

我该如何删除这些物品?我目前看到的唯一解决方案是,我会将成分加载到不在DataContext下的集合中,然后在保存时,删除配方中的所有成分,然后再从该缓存中添加..

c# entityset linq-to-sql

9
推荐指数
2
解决办法
1万
查看次数

同一页面上的ASP.NET MVC模型绑定相关实体

这个问题让我疯了好几个小时了......

在我的领域,我有2个是彼此相关的其他实体SkuItem.每个sku可以有很多项目.

public class Sku
{
    private readonly EntitySet<Item> items;
    public Sku()
    {
        items = new EntitySet<Item>(AttachItems, DetachItems);
    }
    public int SkuId { get; set; }
    public string LongDescription { get; set; }
    public EntitySet<Item> Items
    {
        get { return items; }
        set{ items.Assign(value);}
    }
    private void AttachItems(Item entity)
    {
        entity.Sku = this;
    }
    private static void DetachItems(Item entity)
    {
        entity.Sku = null;
    }
}

public class Item
{
    public Sku Sku { get; set; } …
Run Code Online (Sandbox Code Playgroud)

linq data-binding asp.net-mvc model-binding entityset

5
推荐指数
1
解决办法
2454
查看次数

ASP.NET MVC/LINQ:在View中迭代Linq.EntitySet的正确方法是什么?

好的,所以我有一个强类型的客户"详细信息"视图,它采用Customer对象模型.

我正在使用LINQ to SQL,每个客户都可以拥有多个(停车)空间.

这是数据库中的FK关系,因此我的LINQ生成的Customer模型具有"Spaces"集合.大!

这是来自我的CustomerRepository的代码片段,我遍历客户的停车位以删除所有付款,空间,最后是客户:

public void Delete(Customer customer)
{
    foreach (Space s in customer.Spaces)
        db.Payments.DeleteAllOnSubmit(s.Payments);
    db.Spaces.DeleteAllOnSubmit(customer.Spaces);
    db.Customers.DeleteOnSubmit(customer);
}
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作!

现在在我的"详细信息"视图中,我想用客户的空间填充表格:

<% foreach (var s in Model.Spaces)
   { %>
    <tr>
        <td><%: s.ID %></td>
        <td><%: s.InstallDate %></td>
        <td><%: s.SpaceType %></td>
        <td><%: s.Meter %></td>
    </tr>
<% } %>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

foreach语句不能对'System.Data.Linq.EntitySet'类型的变量进行操作,因为'System.Data.Linq.EntitySet'不包含'GetEnumerator'的公共定义

最后,如果我将这段代码添加到我的Customer部分类中并使用视图中的foreach迭代ParkingSpaces,一切都按预期工作:

public IEnumerable<Space> ParkingSpaces
{
    get
    {
        return Spaces.AsEnumerable();
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是我不想重复自己.我也在想我可以使用ViewModel将Spaces集合传递给View,但是LINQ已经推断并在Customer模型上创建了Spaces属性,所以我认为只使用它是最干净的.

我错过了一些简单的事情,或者我是否正确地接近这个?

谢谢!

entityset linq-to-sql asp.net-mvc-2

5
推荐指数
1
解决办法
7179
查看次数

实体集和实体之间有什么区别?这个定义是标准的吗?

我想知道我的教科书是否有非标准的定义.我已经解决了这个问题,这不是重复的问题.该书将实体和实体集定义为

实体是某种抽象对象,类似实体的集合形成实体集.实体在某种程度上类似于面向对象编程意义上的"对象".同样,实体集与一类对象有一些相似之处.

当他们说"对象类"时,他们指的是一个类,就像你在实例化中创建新对象一样(我知道这只是一个松散的比较).听起来实体集比一个实体更通用,但在这个问题中,回复说明"实体集通常代表实体数据的一部分",这是相反的.

我认为一个实体就像数据库中的一个表,然后是一个实体集?

oop entity object set entityset

3
推荐指数
1
解决办法
6761
查看次数

如何对EntitySet <T>进行排序

MSDN文档声明EntitySet实现IBindingList

(请参阅http://msdn.microsoft.com/en-us/library/bb546190.aspx上的 "绑定到EntitySets" )

但是,可以清楚地看到EntitySet没有实现此接口!

那我怎么排序?

对于上下文,我将此集绑定到WPF ListView.

对于我试图解决的问题的更广泛的背景,请看这篇文章.

.net sorting data-binding entityset linq-to-sql

1
推荐指数
1
解决办法
4291
查看次数

dbms中的实体和实体集有什么区别

我对 DBMS 中的实体和实体集感到困惑。实体集构成实体集吗?就像学生数组中的一组学生对象一样。

我们应该将关系数据库中的表与实体集或实体进行比较吗? 如果我将实体集与表进行比较,那么我可以将实体作为表中的记录进行比较。 如果我错了请纠正我。

我浏览了一些与此相关的书籍和博客。有时实体与 Rdbms 中的表进行比较,有时与实体集进行比较。这是真的。无法得到正确的解释。

请提供示例和清晰的解释,提前致谢

database rdbms entityset

1
推荐指数
1
解决办法
1923
查看次数