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部分比较好奇

System.Data.Objects中对象集类签名的含义

public class ObjectSet<TEntity> : ObjectQuery<TEntity>, ... where TEntity : class

where TEntity : class是泛型类型约束。在这种情况下,这意味着TEntity必须是引用类型(因此不能是像intDateTime这样的值类型)

类型参数必须是引用类型;这也适用于任何类、接口、委托或数组类型。

https://msdn.microsoft.com/en-us/library/d5x73970.aspx

有时候做这个限制很重要,因为有些事情可以用引用类型做,而不能用值类型做。

在这种情况下(实体框架),逻辑上实体必须是引用类型。如果TEntity是一个结构体,那么它就无法跟踪变化(你将在不同的堆栈中有几个不同的"副本")。

注。如果您不理解值和引用类型之间的区别,那么以下内容可能会有所帮助:https://stackoverflow.com/a/5057284/238682

相关文章: