エンティティフレームワークとの関係を作成するための名前付け規則に基づいて1:nの関係を作成します。私はcodefirstを使用しています。 Entity Frameworkのは、規則を無視し、alwas代わりに一つだけの、2つの外部キー列を作成します(私はこのコラムをしたい) エンティティフレームワークコードファーストは、1:nの関係を作成するときにデータベースに2つの外部キー列を生成します。
は、構成クラスには、次のように構成されて
- StreamWorkerUser_Id:
AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true;
私はすべてのモデルにカスタムクラスを使用してMicrosoft.Identity Frameworkを使用しています。
My DbContextクラスは次のように簡単です。
public class StreamWorkerDataContext : IdentityDbContext<StreamWorkerUser, StreamWorkerRole, int, StreamWorkerUserLogin, StreamWorkerUserRole, StreamWorkerUserClaim> { public DbSet<Task> Tasks { get; set; } }
Task
モデル:public class Task : StreamWorkerEntity { public StreamWorkerUser StreamWorkerUser { get; set; } }
StreamWorkerUser
モデル:public class StreamWorkerUser : IdentityUser<int, StreamWorkerUserLogin, StreamWorkerUserRole, StreamWorkerUserClaim> { public virtual List<Task> Tasks { get; set; } // also tested ICollection }
Task
クラスはこの基本タイプから継承、ここでは、2つのタイプの特性StreamWorkerUser
定義された(しかし、これらであります列はデータベース内で正しく生成されます)。プロパティは
Creator
とLastEditor
のデータベース移行を妨げる可能性はありますか?慣例を正しく理解していますか?
より多くの情報:
- Entity Frameworkのバージョン6.1.3
- Microsoft.AspNet.Identity.Core 2.2.1
- Microsoft.AspNet.Identity.EntityFramework 2.2.1
- ASP .NET 4 MVC 5
- AzureのクラウドでのSQL Serverの
- C#6.0
- .NET Frameworkの4.5.2
- このコードはすべてのクラスでlibary
どのようにあなたは、あなたが唯一の外部キーをしたい場合は創造主とLastEditorに関係を保存したいですか? – faint220
@ faint220私は1つの外部キーしか望んでいません。 3つあります。 1つは 'Creator'、1つは' LastEditor'、もうひとつは 'StreamWorkerUser'です。現在、Creator_Id、LastEditor_Id、StreamWorkerUser_Id、StreamWorkerUser_Id1の4つの列が生成されています。 –
エンティティタイプの設定を試しましたか?あなたは流暢なAPIを使用して外部キーを明示的に宣言することができます – Efe