【发布时间】:2016-10-16 14:11:25
【问题描述】:
我有 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; }
}
}
WCF 数据协定
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
【问题讨论】:
标签: c# wcf entity-framework-6 repository-pattern soa