我正在创建一个网站并拥有两个数据库,一个用于我的应用程序,另一个用于外部应用程序。通过外部,我的意思是它是一个我想要使用的开源应用程序。该申请是MVCForum
此外部应用程序已集成了成员资格。它使用依赖注入(Unity)并使用实体框架。显然我不想销毁该项目,并且希望能够让我的应用程序与MVCForum一起运行,这样当它/如果它得到更新时,我可以毫不费力地运行更新而不会影响我的应用程序。
所以,问题在于:
我有一个应用程序的MembershipUser类,称之为externamApp。
namespace MVCForum.Domain.DomainModel
{
public partial class MembershipUser : Entity
{
public MembershipUser()
{
Id = GuidComb.GenerateComb();
}
public Guid Id { get; set; }
public string UserName { get; set; }
public virtual IList<MembershipRole> Roles { get; set; }
//I need to have this. A user has one or many trips
public virtual IList<Trip> Trips{ get; set; }
}
}
我也有自己的应用程序,我们称之为myApp。在我的应用程序中,我有一个名为Trip的课程。
namespace MyApp.Domain.DomainModel.TripModels
{
public partial class Trip : Entity
{
public Trip()
{
Id = GuidComb.GenerateComb();
}
public Guid Id { get; set; }
public virtual MembershipUser User { get; set; }
public virtual TCCategory Category { get; set; }
}
}
如您所见,MembershipUser有一个属性:
public virtual IList<Trip> Trips{ get; set; }
这是因为用户可以进行一到多次旅行...... 您还可以看到Trip有一个属性:
public virtual MembershipUser User { get; set; }
但是,我还希望将一个用户附加到我的Trip类。 当Entity Framework从数据库中提取对象时,它会将该对象与所有子对象链接。例如,当它拉出MembershipUser时,它将附加该用户的所有角色 - 因为这个属性(显然是映射):
public virtual IList<MembershipRole> Roles { get; set; }
我意识到这是一个循环的参考,但我希望有更多知识的人可以提供一个好的建议,甚至可能提供解决方案。
答案 0 :(得分:0)
就像你说的那样,你有一个循环依赖,拥有这样的依赖并不好,你不应该用这种方法创建解决方案。
我想到的第一个解决方案是你创建一个新项目(一个库),其中包含有关您的成员资格的信息(我建议您进一步创建一个包含所有成员的数据库)数据相关的类),这样你就可以从你的应用程序引用该项目,并避免循环依赖。