在不同数据库中的2个表之间创建多对多的表

时间:2016-11-23 15:56:51

标签: c# asp.net sql-server database entity-framework

所以我有2个数据库。 DB1和DB2。我的折扣代码'表位于DB1和我的AspnetUser' table在DB2中。我想在DB1之间做多对多的表,在折扣码'表和' AspnetUser'表,所以我可以看到用户已经使用了特定的折扣码,因此用户无法使用它两次。

我尝试在它们之间做一个正常的多对多表,它就像这样:

CREATE TABLE [dbo].[DiscountUser] (
[DiscountId] INT NOT NULL,
[UserId]  nvarchar(128) NOT NULL,
[LanguageId] INT NOT NULL,
CONSTRAINT [PK_DiscountUser] PRIMARY KEY CLUSTERED ([DiscountId] ASC,    [UserId] ASC),
CONSTRAINT [FK_DiscountUser_Discount_DiscountId] FOREIGN KEY ([DiscountId])     REFERENCES [dbo].[DiscountCode] ([Id]) ON DELETE CASCADE,
CONSTRAINT [FK_DiscountUser_AspNetUsers_Id] FOREIGN KEY ([UserId])     REFERENCES [db2].dbo.[AspNetUsers] ([id]) ON DELETE CASCADE,
CONSTRAINT [FK_DiscountUser_Language] FOREIGN KEY ([LanguageId]) REFERENCES [dbo].[Language] ([Id])

enter image description here

然后我想更新我的实体框架模型设计,这样我就可以在我的c#项目中包含这个新的多对多表。所以重要的是,无论我如何解决这个问题,我仍然可以像使用任何其他实体一样使用这么多的表。

首先我认为我会将所有表放在同一个数据库中,直到我向朋友询问这个问题。我的朋友没有太多时间。他对我说的只是加入你的c#代码将两张桌子放在一起。只需询问stackoverflow,他们会帮助您。所以我在这里。我如何使用m#c#代码进行连接,或者是否有更好的方法可以解决我的问题?

1 个答案:

答案 0 :(得分:0)

数据库之间不能有外键 - 错误很明显。但是你仍然可以在一个查询中将它们连接在一起,你只是不会得到通过外键加入它们的保护(例如,没有外键,你最终可能会在外表中没有数据的孤立条目)。

如果您可以将它们放在最佳的单个数据库中。