簡體   English   中英

使用EF 4.1 Code First時是否可以創建用戶定義的數據類型?

[英]Is it possible to create User-Defined Data Types when using EF 4.1 Code First?

使用EF 4.1 Code First時,是否可以為您的架構創建用戶定義的數據類型?

簡單的答案是沒有。

更長的答案:

嘗試使用用戶定義的類型時,當前的EF實現導致多個問題:

  • 必須在表的DDL定義中使用該類型之前對其進行定義。 因此,無法在數據庫初始化程序的Seed方法中定義該類型(通常用於其他數據庫結構,如觸發器或索引)。 為了完成這項工作,您必須通過實現IDatabaseInitializer來創建全新的初始化程序,並將數據庫創建和表創建分開,因為自定義類型定義必須位於它們之間。 是如何創建數據庫初始化程序的一些示例(每次運行應用程序時,該初始化程序都會重新創建表)。
  • 創建數據庫初始值設定項以反映草圖中的模型更改更為復雜,因為此邏輯可能是EF內部的
  • 您還必須添加檢查以確認尚未創建類型
  • 即使您擁有初始化程序,您仍然會遇到最大的阻礙。 EF尚未准備好允許您為列定義用戶定義的類型HasColumnType API中的ColumnAttributeHasColumnType都不接受自定義類型。 因此,您的映射必須指定基本的原始SQL類型,並且這些自定義類型將在EF生成的表DDL中使用。 因此,除非自定義數據庫初始化程序對這些生成的SQL腳本進行后處理,並用自定義類型(非常難看的解決方案)替換基本類型,否則表將不會使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM