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

Posted

技术标签:

【中文标题】两个独立的应用程序,两个数据库,一个 IOC。如何共享会员资格?【英文标题】:Two separate applications, two databases, one IOC. How to share membership? 【发布时间】:2015-08-03 16:10:01 【问题描述】:

我正在制作一个网站,有两个数据库,一个用于我的应用程序,另一个用于外部应用程序。通过外部,我的意思是它是我想要使用的开源应用程序。申请是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 类。 当实体框架从数据库中提取一个对象时,它会与该对象链接所有子对象。例如,当它取出 MembershipUser 时,它将附加该用户的所有角色 - 因为这个属性(显然还有映射):

public virtual IList<MembershipRole> Roles  get; set; 

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

【问题讨论】:

您使用哪种身份验证?表格? @DiogoCunha 是的,表格。 我回答了你问的问题,但是如果你只是想分享课程或者你也想分享身份验证,我无法得到,你能帮我回答一下吗?跨度> 【参考方案1】:

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

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

【讨论】:

以上是关于两个独立的应用程序,两个数据库,一个 IOC。如何共享会员资格?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Highcharter 创建两个独立的向下钻取图?

MFC中如何将两个独立的程序合并为一个程序(障眼法)

如何使用两个独立变量将拟合数据曲线拟合到已知公式?

如何理解Spring IOC

如何拥有两个具有两个不同高度的独立单元? [复制]

如何使用.Net MVC 5从DropDownList中显示两个独立列中的数据