使用Entity FrameworkはPOCOは、デフォルト値(デフォルト値)書かれた質問V4を解決します

(デフォルト値)のデフォルト値を解決書かれた質問にEntity FrameworkのPOCOを使用


実践と検証の6時間後、唯一の特定のプロジェクトや兄弟UTでの練習のうち、元の記事のPOは、実行することができます(理由は明らかではありません)

兄の後、同じプログラムを再構築したデータベースは、同じ効果を再現することはできません。

また、CSDL反応における多くの記事が更新されますが、更新はSSDLバグではありません。

しかし、弟輸入StoreGeneratedPattern =計算結果は、見つかった場合SSDLも計算言葉を変えました!

EFは、このフィールドの値が書き込まれ、無視されますので、その後、彼らはその値がOKではありません更新する必要があります。 

これは、特定のフィールドを受け入れるための方法はありませんので、何の変化、そしてSSDLはありません!まだ比較的問題ありません。

少なくとも初期値では、避ける場合や挿入構文を解決するためにDTOオブジェクトを追加することができます。

手動で再プルモデル限り、SSDLを、変更または更新された場合、SSDLなしに更新されます。

PS。これらの二つのフィールドのアイデンティティとタイムスタンプ現在同定されたパターンを計算SSDLに提供されます

したがって、EFの現在のデフォルト値は2つの方法があります。

  1. APは、読み取りおよび書き込みはありません、彼らはEFモデルに追加しないでください、あなたは問題を解決挿入することができます(つまり、CSDLには表示されません)
  2. APは、読み取りと書き込み、直接POCOにデフォルト値を追加してくださいます。(あなたがのNullableを使用できる場合 またはタイプ?)

尋ねられたときまでのLは、このような問題があることがわかりました

(援助Rのおかげで)

 

問題は、データベースが、状況の「デフォルト値」を持っている場合、EFは書くための方法はありませんということです

 

L溶液は、非常に不便の種類に関係なく、2つだけでは見られませんでした

まず、SSDL(EDMXファイル)を書き換える(データベース同期限り、これを行うには、ちょうど変更は消えてしまいます)

第二に、フィールドの値は常に(値に差し込むないプログラムがデフォルト値と呼ばれている)内に充填されます

 

ディスカッションボードでの質問は、回避策のように登場しています

 

実際には、この問題を解決することができ、別のアプローチがあります!

 

 

初めて弟は関係のPOCO型に書き換えられている、ので、弟を開始することは、おそらく気づきませんでした

そこ経口以前に持っていた EF 4 POCOの書き換え 自動的POCOオブジェクト生成 品のを、を参照することができます興味

 

----------特別な注意を払ってください!----------------

v2の

カスタムツール「しなければならない」場合は、空のああ!それ以外の場合は、Entity FrameworkはPOCOは統合しないだろう

または更新EDMX時間は全く効果を待ちます!

画像  

-------------------------------------------------

 

真であることを証明するために(写真と真実があります)

だから我々は、DBから始まっ構築します!

 

画像  
開始から当然のDB DBプロジェクトの変更、すべての変更は、通常、デフォルト値はnullにはない、バージョン管理に組み込まれています。
そして、異なる複数のデフォルト値を確認するために、ここでは特に追加され、タイムスタンプのDateTime

 

画像
デフォルト条件を確立するには!

 

画像

画像  
タイムスタンプの種類自体は同じようCREATEDATEを補うためにそうここに、それだけの価値がされています、なぜなら! 

 

我々はそれをテストするための同期データベースの後に良い方向に変化しています!

 

ヒント:データを使用する場合は、新規に従うことができ、最新の変更は言葉を記録する時間を持つことになります。タイムスタンプは、その最新値を維持するために別のプログラムを必要としない、それを直接使用することをお勧めします。それは非常に、非常に多くの労働者を保存することができます

 

画像
EDMX直接起動し、最新モデルのコピーに同期させます

画像   

  画像
确认一下 CreateDate 的属性,的确 StoreGeneratedPattern 是 Computed ! ( 先声明,我没有去改 SSDL )

那~~ 另外一个字段 TimeStamp 去那了? 因为 TimeStamp 我的程序都不会去动到,所以刚刚我先删除了。

 

 

---------------------------------------------------

v3

现在我重新建置却一直都是 None 可能是因为当时不小心点到了吧!很囧

不过,重新再进行验证后,其实发现 StoreGeneratedPattern 有没有设定都没关系!

( 之前都有先入为主的观念 Orz )

目前知道会自动产生StoreGeneratedPattern 只有 Identity 和 TimeStamp 两种格式

 

v2

若是原来就已经有这个字段的话!那么 StoreGeneratedPattern 就会用原来旧的

请重新建立 或是 手动改成正确的就行了!

---------------------------------------------------

 

画像  
因为模型上已经有了,所以 DTO 对象也要加上该对应字段。不然会无法正常执行 
 

( 到目前为止只要加上这一行 code 就好,其他的都先不用动。 )

 

改好后就要验证,刚刚新增的字段是否会对“即有”程序造成影响

当然用单元测试来跑,马上就可以确认了。 (  快速又简单 )

 

画像  
因为是默认值验证,所以就直接拿原本的 UnitTest 连改都不需要
可以看到测试中只有用到 .Name 的属性 (字段) 

 

画像  
太棒了!很快地~~ 测试通过了。

 

  画像
因为这段程序会自动产生三个默认值,所以也一并确认数据库的内容,都可以看到 TimeStamp 和 CreateDate 都有默认值。

v3:为了有图有真像,还是稍微把过程中断将图抓出来。

 

 

だから、Entity Frameworkの4 + POCOを組み合わせると証明するために、問題は、デフォルト値が影響されないことです。

もはや後に変更SSDLバックに変更され、データベースの同期化を心配する必要があります。

オリジナル:大列  Entity FrameworkのPOCOは(デフォルト値)のデフォルト値を解決する使って書かれた質問V4


おすすめ

転載: www.cnblogs.com/chinatrump/p/11496669.html