私はEFをかなり新しくしているので、これは愚かな質問ではないと思います。私は検索しましたが、私の問題に関しては何も見つかりませんでした。EF6データベース最初の外部キーのテーブル当たりの多重度の問題
私はEF6で既存のデータベースをモデリングする際に問題を抱えています。
TPT model モデルを作成する際の問題により、BAMS *環境テーブルを手動で追加する必要があります。 BAMSPortalEnvironmentからBAMSPrimeEnvironmentに外部キーを追加するまではすべて問題ありません。特定のPrime環境では、Portal環境がある場合とない場合がありますが、すべてのPortal環境にはPrime環境があります。
私はVS2017から次のエラーを取得する:
実行変換:多重度は関係のロール「BAMSPortalEnvironment」「FK_BAMSPortalEnvironment_BAMSPrimeEnvironment」で有効ではありません。依存ロールのプロパティはキープロパティではないので、依存ロールの多重度の上限は*でなければなりません。関連するテーブルの
簡体モデル:
CREATE TABLE dbo.Environment(
EnvironmentId int IDENTITY(1,1) NOT NULL,
EnvironmentTypeId char(1) NOT NULL,
[Description] varchar(64) NOT NULL,
CONSTRAINT UQ_Environment UNIQUE NONCLUSTERED (EnvironmentId ASC) ON [PRIMARY],
CONSTRAINT PK_Environment PRIMARY KEY CLUSTERED (EnvironmentId ASC, EnvironmentTypeId ASC) ON [PRIMARY]
) ON [PRIMARY];
CREATE TABLE dbo.BAMSPrimeEnvironment(
EnvironmentId int NOT NULL,
EnvironmentTypeId AS CAST('B' AS char(1)) PERSISTED NOT NULL,
CONSTRAINT FK_BAMSPrimeEnvironment_Environment FOREIGN KEY (EnvironmentId, EnvironmentTypeId) REFERENCES dbo.Environment (EnvironmentId, EnvironmentTypeId) ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT PK_BAMSPrimeEnvironment PRIMARY KEY CLUSTERED (EnvironmentId ASC, EnvironmentTypeId ASC) ON [PRIMARY]
) ON [PRIMARY];
CREATE TABLE dbo.BAMSPortalEnvironment(
EnvironmentId int NOT NULL,
EnvironmentTypeId AS CAST('P' AS char(1)) PERSISTED NOT NULL,
BAMSPrimeId int NOT NULL,
BAMSPrimeTypeId AS CAST('B' AS char(1)) PERSISTED NOT NULL,
CONSTRAINT FK_BAMSPortalEnvironment_BAMSPrimeEnvironment FOREIGN KEY (BAMSPrimeId, BAMSPrimeTypeId) REFERENCES dbo.BAMSPrimeEnvironment (EnvironmentId, EnvironmentTypeId) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT FK_BAMSPortalEnvironment_Environment FOREIGN KEY (EnvironmentId, EnvironmentTypeId) REFERENCES dbo.Environment (EnvironmentId, EnvironmentTypeId) ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT UQ_BAMSPortalEnvironment_BAMSPrimeId_BAMSPrimeTypeId UNIQUE NONCLUSTERED (BAMSPrimeId ASC, BAMSPrimeTypeId ASC) ON [PRIMARY],
CONSTRAINT PK_BAMSPortalEnvironment PRIMARY KEY CLUSTERED (EnvironmentId ASC, EnvironmentTypeId ASC) ON [PRIMARY]
) ON [PRIMARY];
私は、これは「*」が、それは正確に私のモデルを記述していないために、「0..1」を変更することにより、「修正」することができます。私はこのことを実現するために何が欠けていますか?
これは初めての投稿です。追加情報が必要な場合は、お知らせください。
ありがとうございます!
それはあなたが 'BAMSPrimeEnvironment'、[PRIMARY]、' – ironstone13
ONこの 'CONSTRAINT UQ_EnvironmentID_EnvironmentType UNIQUE NONCLUSTERED(EnvironmentIdのASC、EnvironementType)のようなものにユニーク制約を適用する場合、私は提案を理解していない助けるん。テーブルには、すでに一意の列に主キーがあります。 AFAIK、EF6はユニーク制約をサポートせず、主キーのみをサポートします。 –
ああ、申し訳ありませんが、これらの列の*両方に*複合* PKがあることに気付かず、 'EnvironmentId'のみであると思っていました。これは非常に奇妙なことですが、両方のテーブルに複合PKがあるので、この関係は明らかに '* 0.1.1'であり、' * 'ではありません。多分、EFはこのようなシナリオをサポートしておらず、すべてのFKを1対多数の暗黙的に扱いますか? – ironstone13