C# 向实体框架中的分部类添加接口无效
我正在实体框架(v5)对象上使用分部类(.NET 4.5)。我向这个分部类添加了一个接口,但是针对这个接口测试EF对象是错误的,但是应该识别它,因为接口是在分部类上定义的。以下是我正在尝试的:C# 向实体框架中的分部类添加接口无效,c#,asp.net,entity-framework,partial-classes,C#,Asp.net,Entity Framework,Partial Classes,我正在实体框架(v5)对象上使用分部类(.NET 4.5)。我向这个分部类添加了一个接口,但是针对这个接口测试EF对象是错误的,但是应该识别它,因为接口是在分部类上定义的。以下是我正在尝试的: public interface Product : ILastModified { public DateTime LastModified { get; set; } } 然后在我的数据层中,我尝试以下方法: public virtual int Update<T>(T TO
public interface Product : ILastModified
{
public DateTime LastModified { get; set; }
}
然后在我的数据层中,我尝试以下方法:
public virtual int Update<T>(T TObject) where T : class
{
//WHY ALWAYS FALSE?
if (TObject is ILastModified)
{
(TObject as ILastModified).LastModified = DateTime.Now;
}
var entry = dbContext.Entry(TObject);
dbContext.Set<T>().Attach(TObject);
entry.State = EntityState.Modified;
return dbContext.SaveChanges();
}
公共虚拟int更新(T TObject),其中T:class
{
//为什么总是假的?
如果(对象已ILastModified)
{
(TObject as ILastModified).LastModified=DateTime.Now;
}
var entry=dbContext.entry(TObject);
dbContext.Set().Attach(TObject);
entry.State=EntityState.Modified;
返回dbContext.SaveChanges();
}
问题是“if(TObject是ILastModified)”总是false,即使我在分部类上设置了它。我是做错了什么,还是有办法实现这样的目标?您已经将
产品定义为一个接口,而不是一个类
应该是:
interface ILastModified {
{
DateTime LastModified { get; set; }
}
public partial class Product : ILastModified
{
/* this prop is declared in the Ef generated class */
//public DateTime LastModified { get; set; }
}
编辑:
对方法进行此更改时,您不必使用Is
:
public virtual int Update<T>(T TObject) where T : class, ILastModified
{
TObject.LastModified = DateTime.Now
var entry = dbContext.Entry(TObject);
dbContext.Set<T>().Attach(TObject);
entry.State = EntityState.Modified;
return dbContext.SaveChanges();
}
公共虚拟int更新(T TObject),其中T:class,ILastModified
{
TObject.LastModified=DateTime.Now
var entry=dbContext.entry(TObject);
dbContext.Set().Attach(TObject);
entry.State=EntityState.Modified;
返回dbContext.SaveChanges();
}
这样,如果您传递的类型没有实现接口,您将得到编译时错误。您已经将产品定义为接口而不是类
应该是:
interface ILastModified {
{
DateTime LastModified { get; set; }
}
public partial class Product : ILastModified
{
/* this prop is declared in the Ef generated class */
//public DateTime LastModified { get; set; }
}
编辑:
对方法进行此更改时,您不必使用Is
:
public virtual int Update<T>(T TObject) where T : class, ILastModified
{
TObject.LastModified = DateTime.Now
var entry = dbContext.Entry(TObject);
dbContext.Set<T>().Attach(TObject);
entry.State = EntityState.Modified;
return dbContext.SaveChanges();
}
公共虚拟int更新(T TObject),其中T:class,ILastModified
{
TObject.LastModified=DateTime.Now
var entry=dbContext.entry(TObject);
dbContext.Set().Attach(TObject);
entry.State=EntityState.Modified;
返回dbContext.SaveChanges();
}
这样,如果传递的类型未实现接口,则会出现编译时错误。但产品类是由Entity Framework生成的,然后我将向这个生成的类添加一个分部类您必须通过引入“ILastModified”接口来扩展分部Product
类。但是产品类是由实体框架生成的,然后我将向这个生成的类添加一个分部类。您必须通过引入“ILastModified”接口来扩展分部Product
类。产品是类还是接口?产品是类还是接口?