C# 泛型类 EF6,保存实例(此)



我正在尝试为我的实体框架模型创建一个泛型类。

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); 

最新更新