Entity Frameworkコアデータベース - 最初のScaffold後の最初の更新?

ef-database-first entity-framework entity-framework-core

質問

私はEntity Framework Coreで遊んでいます。私はDatabase-Firstアプリケーションの実装に取り​​組んでいます。最初のScaffold-DbContextコマンドはうまく動作し、私が望むように整理されていなければ、すべてのエンティティを正しく作成します。それはスキーマを使用して責任領域を分割するSQL Serverデータベースであり、Scaffoldがそれらをすべて単一のフォルダに投げるという事実を気にしません。

それ以外に、データベースの更新が発生した後にScaffoldを再実行してクラスを更新する方法があるかどうかを判断することができませんでした。私が見つけることができる最も近いのは、Scaffold-DbContextコマンドを-forceパラメータで再実行することです。しかし、これはContext.csファイルに追加したカスタムコードを上書きします。ハードコードの代わりに接続文字列を設定値にするなどです。

私はこれに似たいくつかの他の質問を見てきましたが、最初の足場についてのみ話しました。

これを行うために将来の変更を手動でコーディングする方法がないのでしょうか?これがなければ、EFコアではデータベースにはまったく役に立たないアプローチをするようです。

受け入れられた回答

あなたが自分自身と言ったように...データベースの最初のアプローチの主な問題:モデルを手動で変更したり、名前の変更などを始めたりしないでください。データベースがもう変わらないことを100%保証している場合を除きます。 100%確実ではない場合は、自動生成されたモデルでコードを作成してください。

Re-Scaffoldingは、モデルクラスで直接行った変更を上書きし、変更または追加したものをすべて消去します。

しかし、自動マッピングによって上書きされない部分クラスを側で作成することができます:

public partial class TableName
{
    public string Name_of_a_property
    {get; set;}
}

これは、エンティティにコードを追加するうえで便利な方法ですが、自動マッピングでは触れません。パーシャルビューの名前が自動生成されたクラスと同じで、すべてがOKであることを確認してください。


人気のある回答

Antoine Pelletier氏が答えた真のDBファーストアプローチには、再起動可能な足場を使用することができます。

しかし、モデルにコードを最初にインポートする際に足場が一度使用されることが多くなり、コードファーストのアプローチを続行します。リバースエンジニアリングを使用して、 https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-dbに記載されている既存のデータベースに基づいてEntity Frameworkモデルを作成するプロセス



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ