2014-02-18 61 views
2

有一個問題,我已經從EF4.1更新到6.0.2的應用程序,以利用未來的遷移。但是由於升級automapper現在無法將id轉換爲enum,我使用以下代碼及其工作很長一段時間。有沒有人知道EF6和AutoMapper發生了什麼樣的枚舉轉換

Mapper.CreateMap<Payment, ListTowDto>() 
    .ForMember(x => x.PaymentStatus, 
     opt => opt.MapFrom(s => Enum.GetName(typeof(PaymentStatus), s.PaymentStatusId))) 

有什麼新東西需要注意?

而且我已經升級到AutoMapper 3.1.1(使用autmapper 2和EF 4.1?)

編輯:

即時得到以下錯誤:

Exception Details: System.Data.SqlClient.SqlException: Invalid column name 'PaymentStatus'

被轉換爲的dto對象具有以下內容:

public int ApprovalStatusId { get; set; }  
public virtual ApprovalStatus ApprovalStatus { get; set; } 

乾杯

回答

1

好的我已經搞定了。

對於那些從EF4升級到EF6和使用枚舉虛擬引用在那裏的實體模型與AutoMapper等的自動填充,您需要[NotMapped]註釋虛擬領域。

所以在我的情況下,下面將給出相同的功能之前支持ENUM與實體框架5

public int ApprovalStatusId { get; set; } 
[NotMapped] 
public virtual ApprovalStatus ApprovalStatus { get; set; } 

對於那些希望如何在EF5 +實體模型聲明枚舉介紹,你只是需要申報在模型中的枚舉,所以如果我將來從頭開始這個模型,我會從我的模型中移除我的int PaymentStatusId,並且從ApprovalStatus中刪除virtual關鍵字,因爲在這種情況下它變得毫無用處。

public ApprovalStatus ApprovalStatus { get; set; } 

數據庫會將枚舉的int值存儲到ApprovalStatus的數據存儲列。

乾杯。

相關問題