【问题标题】:create table that is many to many between 2 tables in different databases在不同数据库中的 2 个表之间创建多对多表
【发布时间】:2016-11-23 15:56:50
【问题描述】:

所以我有 2 个数据库。 DB1 和 DB2。我的“discountCode”表在 DB1 中,而“AspnetUser”表在 DB2 中。我想在 DB1 中的“discountCode”表和“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])

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

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

【问题讨论】:

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


【解决方案1】:

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

如果您可以将它们放在一个数据库中,那将是最好的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2016-08-02
    • 2018-01-15
    • 2011-09-28
    • 2019-08-24
    相关资源
    最近更新 更多