Tru*_*an1 1 c# asp.net entity-framework partial-classes
我在我的Entity Framework(v5)对象上使用了一个部分类(.NET 4.5).我为此部分类添加了一个接口,但是针对此接口测试EF对象是错误的,但应该识别接口是在部分类上定义的.这是我正在尝试的:
public interface Product : ILastModified
{
public DateTime LastModified { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在我的数据层我尝试这个:
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();
}
Run Code Online (Sandbox Code Playgroud)
问题是"if(TObject是ILastModified)"总是假的,即使我在部分类上设置它.我做错了什么或有办法实现这样的事情吗?
您已将自己定义Product为接口而不是类.
应该:
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; }
}
Run Code Online (Sandbox Code Playgroud)
编辑:
您不必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();
}
Run Code Online (Sandbox Code Playgroud)
这样,如果你传递的类型没有实现接口,你将得到编译时错误.
| 归档时间: |
|
| 查看次数: |
3108 次 |
| 最近记录: |