我正在尝试为我的实体框架模型创建一个泛型类。
using UM4RS.persistance;
using UM4RS.Persistance;
public abstract class MyEntity<TObject> where TObject : class, IBaseEntity
{
static readonly ModelContext ModelContext = new ModelContext();
// class method to save object
public static TObject Save(TObject t)
{
if (t == null) return null;
ModelContext.Set<TObject>().Add(t);
ModelContext.SaveChanges();
return t;
}
// instance method to save the current instance
public void Save()
{
Save(this); //<- ERROR: Cannot convert MyEnttity<TObject> to TObject
// Also tried
ModelContext.Set<TObject>().Add(this); //<- Same error here
ModelContext.SaveChanges();
}
}
我的模型类继承自 MyEntity
public class User : MyEntity<User>, IBaseEntity
{
...
}
最后,我想存档的是:
User usr = new User();
usr.Save(); // <- Call the instance method
由于User
类是一个IBaseEntity
,而又是TObject
,你可以投射它
var baseEntity = this as TObject;
Debug.Assert(baseEntity!=null);//assert that its not violated
Save(baseEntity);
ModelContext.Set<TObject>().Add(baseEntity);