- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有 3 种方法可以将项目添加到大多数列表...
Add(SomeType)
IList<T>.Add(T)
界面IList.Add(object)
接口(interface)方法并且您通常希望它们的行为或多或少相同。但是,LINQ 的 EntitySet<T>
在 3.5 和 4.0 上都是...特有的; IList
API 不会将集合标记为“已分配”——其他两种机制会——这听起来微不足道,但它很重要,因为它会严重影响样板代码中的序列化(即导致它被跳过)。
例子:
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
现在……这让我深感惊讶;如此之多以至于我花了 2 个多小时通过代码向上跟踪以隔离正在发生的事情。所以……
这有任何理智的理由吗?或者这只是一个错误?
(FWIW,在 3.5 中的 set.Assign(set)
中也存在问题,但现在已在 4.0 中修复。)
最佳答案
有趣的是,现在已经为几个版本确定了这一点(你说 3.5 的问题在 4.0 中得到了修复)。 Here is a post from 2007.其余IList
4.0 中的方法正确绑定(bind)到 IList<T>
方法。我认为有 2 种可能的解释(错误/功能多样性):
HasLoadedOrAssignedValues
.可能两者兼而有之 - 框架内的其他代码正在依赖的错误。听起来像是有人对自己说:
No one is really going to cast this into an IList and then call the Add method, right?
关于c# - EntitySet - IList.Add 没有设置分配是否有合理的理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6194639/
当我尝试向 EntitySet 添加新项目时,出现以下异常: An entity with the same identity already exists in this EntitySet 但是,
我试图用谷歌搜索它,但在所有示例中都没有很好地解释。在以下上下文中,EntitySet() 方法究竟是什么? private static IEdmModel GetEdmModel()
我有这段代码...看起来不错而且优雅,但显然框架不喜欢它,因为我在遍历它时弄乱了一个集合: foreach (KitGroup kg in ProductToTransfer.KitGroups)
这个问题在这里已经有了答案: Value cannot be null. Parameter name: entitySet (12 个答案) 关闭 5 年前。 using System; usin
我在 Linq to SQL 中有一个实体集,假设一个人有多个地址。然后用这段代码 person.Addresses.Add(address); person.Addresses.Last(). ..
如何转换 System.Collections.Generic.List到 System.Data.Linq.EntitySet ? 最佳答案 不要认为你可以转换 List到EntitySet但您可以
对于每个与其他实体具有一对多关系的实体,当我尝试添加新项目时,似乎我必须定义与该实体相关的这些项目列表。例如,假设我有一个 ProductType 实体,其中有一个 Products 列表,如下所示:
我尝试按照 featuretools.com 的文档学习功能工具。 出现错误:AttributeError: 'EntitySet' 对象没有属性 'entity_from_dataframe' 你能
在 LINQ to SQL 类中,为什么从外键 EntitySet 创建的属性对象,实现 IEnumerable , 其中作为 DataContext 上的对象是 Table实现 IQueryable
我有一个相当标准的设置,只有 POCO 类 public class Project { public int ProjectId { get; set; } public strin
我在处理某些 dbml 生成的类时遇到了问题,这些类无法解析为高效的 SQL。想象一下,我有一个帐户表和一个交易表,其中每笔交易都与特定帐户相关联。我将所有这些加载到 dbml 中,然后弹出一个 Ac
我在导入存储过程然后创建复杂类型并将函数命名为导入“sproc_Forums_GetForumGroupByID”后出现此错误,一旦选择了 GridView,此过程就会从 ObjectDataSour
当我从 Controller 访问模型的数据时。我收到此错误 EntitySet 'Department' is based on type 'Admin' that has no keys defi
假设我有两个用外键约束连接的表。考虑以下代码: using(var dc = TestDataContext()) { IQueryable query = dc.ParentTable;
这是我第一次尝试了解来自 Net Tiers 的 Linq to Entity。与它作斗争但不理解它背后的一些逻辑……例如。我什么时候使用: Entity.EntitySet.Load() 和 con
希望有人能给出一些启示,也许是我遇到的这个问题的可能解决方案...... 我使用 LINQ to SQL 将一些数据从数据库提取到本地实体中。它们是来自购物车系统的产品。产品可以包含 KitGroup
有 3 种方法可以将项目添加到大多数列表... 通过直接的公共(public) API 方法,通常是 Add(SomeType) 通过通用 IList.Add(T)界面 通过非通用 IList.Add
我想知道 LINQ-to-SQL 中 EntitySet 和 EntityRef 之间的真正区别。据我所知,EntitySet 是一对多或多对多的关系,而 EntityRef 是一对一的。如果我错了,
引用deployment page中提到的featuretools'v0.7.0'的部署方法 我使用ft.save_features方法保存了我的feature_defs,但是在使用ft.load_f
我有一个类层次结构,我通过 LINQ to SQL Controller 从数据库中获取这些类,并根据需要显示那个大类。让我解释一下: BigProduct IEnumerable //...some
我是一名优秀的程序员,十分优秀!