0

要件が次の場合、ObjectContextまたはのどちらを選択するかDbContext

  1. Modeler によってデータ モデリングが行われ、開発チームに SQL スクリプトが提供されます。このため、モデル ファーストを選択しました。これは正しい選択ですか?
  2. 既存の非正規化されたデータベースは、モデラーによって作成された新しいデータベースに移行されます
  3. UI からフィールド レベルですべての更新の監査ログを維持する必要がある
  4. 各テーブルにはCreatedByCreatedOnModifiedByがありModifiedOnます。これらのフィールドは、 during によって自動的に入力され context.SaveChanges()ます。
4

2 に答える 2

0
Thanks a lot Julie for your super quick response. You are The-EF-Angel.
I have read your MSDN article on Logging in EF.
To your reponse:

1. As a mandate, We need to use sql scripts provided by our Modeler to create our db. Also these scripts will be keep changing(With addition of new tables & update of exising schema) for each sprints. Hope DataFirst Model is fine. Whenever new we get new sql scripts, we plan to recreate the DB and update our EDMX. Do you see any issues with this approach ?

2. Ya we have a migration specialist for this task. I justed pointed that in question as an FYI.

3. We use MVC app and for field by field changes in audit log table, we planned to let EF decide what fields have changed(using change tracking ideas from your book) and capture that info into a DTO(we borrow your repository ideas from the course "EF in enterprise course" you authored in PS). And push that DTO into our messaging infrastructure and that will insert the audit logs to the DB.
Is this fine ? Do you foresee any issues ?

4. As you pointed out, we could change our interface for our needs by referring to your MSDN article and there "Figure 3 Setting the Interface’s DateCreated Property During SaveChanges"

I plan to use,
public interface ITheBaseType 
{

  DateTime DateCreated { get; set; }
  DateTime DateModified { get; set; }
  string   CreatedBy { get; set; }
  string   ModifiedBy { get; set; }
}
于 2013-02-10T11:37:22.657 に答える
0

新しいアプリを開始する場合は、DbContext を使用してください。必要に応じて、いつでも ObjectContext にドリルダウンできます。

  1. デザイナーが不要な場合は、移行で Code First を使用し、update-database -script を使用して SQL スクリプトを作成することもできます。

  2. DBA の仕事のように聞こえますか?

  3. フィールドごとの変更..これが切断されたアプリである場合は、EF (IMHO) の外で処理する方がよいでしょう。

  4. これについては、SaveChanges を簡単にオーバーライドできます。あなたは dbcontext book を持っているとつぶやきで言いました。基本クラスを使用してこれを行う例があります。ただし、最初にモデルを使用する場合は、この問題を回避してください: http://msdn.microsoft.com/en-us/magazine/jj553510.aspx

于 2013-02-09T20:47:39.270 に答える