2012-11-10 12 views
22

yılında Enum ile uyumlu: BenTinyint (bayt), SmallInt (Int16) Veritabanı ilk tasarım kullanma ve tinyint sahip (ya da küçük tamsayı) sütunu Ef5

ile EDM'de Enum türü için bu sütunu eşlenen

[MyEnumColumn] [tinyint] NOT NULL 

External Type: NSpace.MyEnumType 
Name:MyEnumType 
UnderlyingType:Byte 
NSpace.MyEnumType böyle tanımlanır

:

Sadece
public enum MyEnumType 
{ One, Two, Three, All } 

varlık yüklemeye çalışırken bu hatayı almaya bağlamdan: Ben [Smallint] ve [Int16] kullanırsanız

Schema specified is not valid. Errors:

No corresponding object layer type could be found for the conceptual type 'EntityDataModel.MyEnumType'.

The following information may be useful in resolving the previous error:

The underlying type of CLR enumeration type does not match the underlying type of EDM enumeration type.

aynı uygular ama [Int] ve enum tipine veritabanını değiştirmek ettiğinde [Int32] hata gitti.

Enum değerini,% 99,9 değerindeki enumlar 256'dan fazla öğeye sahip olmadığında veya başka bir şeyi özlediğimde neden 1Byte (Tinyint) yerine 4Byte (Intint) veri alanında depolamam gerekiyor?

cevap

63

kimse sorun ENUM varsayılan türü olan ilgi Eh eğer: enum varsayılan yana

public enum MyEnumType 
{ One, Two, Three, All } 

int, [Dayanak Tür: {Byte}] yazmaya arasında eşleşmiyor türü [ Harici Tip] {MyEnumType: Int} yüzden bu gibi enum tanımlamak gerekir benim orijinal tinyint alan için bunu düzeltmek için:

public enum MyEnumType : byte 
{ One, Two, Three, All } 
+0

bu da bugün vardı hatayı çözdü. Yani +1 – magicandre1981

+0

Bu benim günümü kurtardı :) +1 – Midas

+0

Eğer birisi ilgilenirse, evet beni kurtardığın için! sağ ol, kanka!! – CMS