我開發了我的數據層與POCO類和持久性無知原則在我心中。我的代碼是這樣持久性無知與ASP.NET身份框架和EF代碼第一
POCO類
public class Report
{
public int Id { get; set; }
public string Name { get; set; }
...
}
}
倉庫接口
public interface IReportRepository
{
IEnumerable<Report> GetAllReports();
Report GetReport(int reportId);
...
}
,並與實體框架代碼第一個接口實現,就像
public class EFReportRepository : BaseRepository, IReportRepository
{
public EFReportRepository(string connectionString)
: base(connectionString)
{
}
public IEnumerable<Report> GetAllReports()
{
return DbContext.Reports.Include(r => r.AggregationParameters).Include(r => r.ErrorAttachment).Include(r => r.ExcelAttachment).Include(r => r.XmlAttachment).ToList();
}
public Report GetReport(int reportId)
{
return DbContext.Reports.Include(r => r.AggregationParameters).Include(r => r.ErrorAttachment).
Include(r => r.ExcelAttachment).Include(r => r.XmlAttachment).SingleOrDefault(r => r.Id == reportId);
}
一切工作順利,直到授權( asp.net身份)被添加。現在
using Microsoft.AspNet.Identity.EntityFramework;
namespace DataRepository.Models
{
public class MyUser : IdentityUser
{
}
}
每個報告都有用戶創建此報告
public class Report
{
public int Id { get; set; }
public string Name { get; set; }
...
public MyUser CreatedByUser { get; set; }
public string CreatedByUserId { get; set; }
...
}
}
現在我有一個與實體框架緊密相依,我想省略,因爲從IdentityUser類繼承的。
我該如何排除這種依賴關係?我會感謝任何幫助)
更新 現在的問題是與創建UserManager對象。
UserManager需要IUserStore作爲輸入參數。這個接口在Microsoft.AspNet.Identity.EntityFramework了命名空間實現,被稱爲UserStore,所以我的代碼是這樣
manager = new UserManager<MyUser>(new UserStore<MyUser>(MyDbContext)).
但現在MYUSER類不是從IdentityUser繼承,所以這段代碼被打破(UserStore需要此類型的類)
我發現[this](http://timschreiber.com/2015/01/14/persistence-ignorant-asp-net-identity-with-patterns-part-1/)。也許將有助於某人 – Disappointed