![](/img/trans.png)
[英]C# Entity Framework Using the Repository and Unit of Work Pattern for Multiple DB Transactions
[英]c# mapping between Domain Entity and Data Entity in Repository Pattern and unit of work project
我有用於C#應用程序的SOA層體系結構。 我在業務訪問層“類庫項目”中定義了業務/域實體。...在數據訪問層“類庫項目”中的數據實體和服務器端WCF的數據合同在WCF服務“類庫項目”下
namespace App.Core.Entities
{
public class Member
{
public int MemberID { get; set; }
public string Title { get; set; }
public string Surname { get; set; }
public string Forename { get; set; }
public string MiddleName { get; set; }
}
namespace App.DAL.Entities
{
[Table("Member")]
public class Member
{
[Key]
public int MemberID { get; set; }
public string Title { get; set; }
public string Surname { get; set; }
public string Forename { get; set; }
public string MiddleName { get; set; }
}
}
namespace App.Services.Contracts
{
[DataContract]
public class MemberData : IIdentifiableEntity
{
[DataMember]
public int MemberID { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public string Surname { get; set; }
[DataMember]
public string Forename { get; set; }
[DataMember]
public string MiddleName { get; set; }
int IIdentifiableEntity.EntityId
{
get { return MemberID; }
set { MemberID = value; }
}
}
}
public interface IGenericRepository<TEntity> where TEntity :class
{
global::System.Linq.IQueryable<TEntity> GetAll();
TEntity GetEntityByID(int id);
void InsertEntity(TEntity obj);
void UpdateEntity(TEntity obj);
void DeleteEntity(int id);
}
namespace App.Repository.UnitOfWork
{
public class MembershipManagement_UOF:IDisposable
{
protected Member_Repository _Member_Repository;
public Member_Repository Member_Repository
{
get
{
if (this._Member_Repository == null)
{
this._Member_Repository = new Member_Repository(_MembershipContext);
}
return _Member_Repository;
}
}
}
現在我的問題是,當我從商業項目中運行代碼,它應該只跟存儲庫並使用唯一的業務實體的成員,但它讓我把DAL商業項目中添加引用
這是我得到錯誤的代碼
public IEnumerable<Member> GetAllMember()
{
using (var _uof = new MembershipManagement_UOF())
{
var entities = _uof.Member_Repository.GetAll();
// return entities.ToList();
return null;
}
}
Severity Code Description Project File Line Suppression State
Error CS0012 The type 'Member' is defined in an assembly that is not referenced. You must add a reference to assembly 'App.DAL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. App.CoreServices C:\My Work\Credit Union Application\CreditSolutionApp\App.CoreServices\CoreServices\MembershipCore\MembershipCore.cs 23 Active
從原始帖子中很難分辨出來,但是我懷疑您對IGenericRepository
接口的具體實現是從DAL而不是從BLL(業務邏輯層)引用Member
類。 具體的存儲庫需要使用BLL中的Member
類作為其通用TEntity
類型。 具體存儲庫類的方法需要使用DAL Member
類從數據庫加載數據,然后將那些DAL Member
實例映射到BLL Member
實例,然后返回BLL Member
實例。
將DAL成員類重命名為MemberDto之類的內容可能有助於避免混淆。 因此,您可能最終會IGenericRepository<TEntity>
類似的情況(其中IGenericRepository<TEntity>
在BLL中,而MyMemberRepo
在DAL中):
public class MyMemberRepo : IGenericRepository<Member>
{
public IEnumerable<Member> GetAllMember()
{
// 1. Load the data from the data store into an IEnumerable<MemberDto>.
// 2. Map the IEnumerable<MemberDto> to an IEnumerable<Member>, perhaps
// using something like the open source AutoMapper project.
// 3. Return the IEnumerable<Member>.
}
// ... other interface implementations...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.