0

ドロップダウンで選択した値をデータベースに渡そうとしています 私のデータコントラクトには次のコードがあります

      public EnumTypes.RegardingObjectType RegardingObjectType { get; set; }
    public Guid RegardingObjectId { get; set; }

enumtypes.cs には次のものがあります。

    public class EnumTypes
{

    public enum RegardingObjectType
    {
        UnknownOrNone = 0,
        Account = 1,
        Cellsite = 2,

eventdal.cs には次のものがあります。

       private t_Event MapEventToEntity(Event newevent, t_Event eventToBeChanged)
    {
   eventToBeChanged.RegardingObjectType = int.Parse(newevent.RegardingObjectType.ToString());

正常にビルドされますが、実行中に例外が発生します

4

3 に答える 3

1

Entity Framework 4 は、列挙型を列の型として使用することをサポートしていません。列挙型のネイティブ サポートが必要な場合は、Entity Framework 5 にアップグレードする必要があります。

どうしても EF 4 を使用する必要がある場合 (プロジェクトが既に実装されているため)、次のように回避することをお勧めします。

public int RegardingObjectTypeAsInt { get; set; }

[NotMapped]
public EnumTypes.RegardingObjectType RegardingObjectType
{
  get { return (EnumTypes.RegardingObjectType) this.RegardingObjectTypeAsInt; }
  set { this.RegardingObjectTypeAsInt = (int)value; }
}

これはきれいな解決策ではありませんが、問題の確実な回避策であり、ページでバインドして、他のコードで列挙型自体として扱うことができます。

于 2013-04-08T20:07:35.720 に答える
0

文字列値をデータベースにマップする場合は、次の回答を確認してください。

Entity Framework 4 で列挙型プロパティをマップする方法

ただし、@ IronMan84が指摘したように、これが複数単語の列挙型で機能するかどうかはわかりませんが、便利であり、それでも機能します.

于 2013-04-08T22:47:28.580 に答える