System.Data.Objects中对象集类签名的含义
本文关键字:Data Objects 对象 System | 更新日期: 2023-09-27 18:04:45
我一直在寻找DeleteObject方法的定义。但是我发现了一些我不知道的东西。
public class ObjectSet<TEntity> : ObjectQuery<TEntity>, IObjectSet<TEntity>, IQueryable<TEntity>, IEnumerable<TEntity>, IQueryable, IEnumerable where TEntity : class
这是命名空间System.Data.Objects中ObjectSet类定义的签名,谁能解释一下这个定义?我对where TEntity : class
部分比较好奇
public class ObjectSet<TEntity> : ObjectQuery<TEntity>, ... where TEntity : class
where TEntity : class
是泛型类型约束。在这种情况下,这意味着TEntity
必须是引用类型(因此不能是像int
或DateTime
这样的值类型)
https://msdn.microsoft.com/en-us/library/d5x73970.aspx 有时候做这个限制很重要,因为有些事情可以用引用类型做,而不能用值类型做。类型参数必须是引用类型;这也适用于任何类、接口、委托或数组类型。
在这种情况下(实体框架),逻辑上实体必须是引用类型。如果TEntity
是一个结构体,那么它就无法跟踪变化(你将在不同的堆栈中有几个不同的"副本")。
注。如果您不理解值和引用类型之间的区别,那么以下内容可能会有所帮助:https://stackoverflow.com/a/5057284/238682