(デフォルト値)のデフォルト値を解決書かれた質問にEntity FrameworkのPOCOを使用
実践と検証の6時間後、唯一の特定のプロジェクトや兄弟UTでの練習のうち、元の記事のPOは、実行することができます(理由は明らかではありません)
兄の後、同じプログラムを再構築したデータベースは、同じ効果を再現することはできません。
また、CSDL反応における多くの記事が更新されますが、更新はSSDLバグではありません。
しかし、弟輸入StoreGeneratedPattern =計算結果は、見つかった場合SSDLも計算言葉を変えました!
EFは、このフィールドの値が書き込まれ、無視されますので、その後、彼らはその値がOKではありません更新する必要があります。
これは、特定のフィールドを受け入れるための方法はありませんので、何の変化、そしてSSDLはありません!まだ比較的問題ありません。
少なくとも初期値では、避ける場合や挿入構文を解決するためにDTOオブジェクトを追加することができます。
手動で再プルモデル限り、SSDLを、変更または更新された場合、SSDLなしに更新されます。
PS。これらの二つのフィールドのアイデンティティとタイムスタンプ現在同定されたパターンを計算SSDLに提供されます
したがって、EFの現在のデフォルト値は2つの方法があります。
- APは、読み取りおよび書き込みはありません、彼らはEFモデルに追加しないでください、あなたは問題を解決挿入することができます(つまり、CSDLには表示されません)
- 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