两个独立的应用程序,两个数据库,一个IOC.如何共享会员资格

本文关键字:两个 共享 何共享 数据库 独立 应用程序 一个 IOC | 更新日期: 2023-09-27 18:06:03

我正在制作一个网站,有两个数据库,一个用于我的应用程序,另一个用于外部应用程序。所谓外部,我的意思是它是一个我想要使用的开源应用程序。应用程序是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; }
        }
 }

我也有自己的app,我们叫它myApp。在我的app中,我有一个叫做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类。当实体框架从数据库中提取一个对象时,它与该对象链接所有子对象。例如,当它取出MembershipUser时,它将附加该用户的所有角色—由于这个属性(显然还有映射):

public virtual IList<MembershipRole> Roles { get; set; }

我知道这是一个循环参考,但我希望有更多知识的人可以提供一个好的建议,甚至一个解决方案。

两个独立的应用程序,两个数据库,一个IOC.如何共享会员资格

就像你说的,你有一个循环依赖,有这样的依赖是不好的,你不应该用这种方法来创建解决方案。

我想到的第一个解决方案是,你创建一个新项目(一个库),其中包含有关您的成员资格的信息(我建议你更进一步,创建一个包含所有数据相关类的数据库),这样你就可以从你的两个应用程序中引用该项目,并避免循环依赖。