0

PanContentというクラスがあります

public class PanContent
    {        
        public int Id { get; set; }           
        public string Description { get; set; }
        public string Content { get; set; }            

        public PanContentStatus Status { get; set; }
        public ActivityId ActivityId { get; set; }       
    }

そして私は列挙型PanContentStatusを持っています

public enum PanContentStatus
    {
        Active = 0,
        Partial,
        Inactive,
        Deleted
    }

これをコントローラーで使用しようとしています

public ActionResult Index()
    {
        var db = new TlDbContext();
        var status = PanContentStatus.Partial;

        var content = db.PanContents.Where(p => p.Status == status).FirstOrDefault();
        if (content != null)
        {
            return View(content);
        }
        else
        {
            return View();
        }
    }

そしてそれを私の見解で使用します

@model IEnumerable<Sample.Models.PanContent>
<script type="text/javascript">
    var model = @Html.Raw(Json.Encode(Model));
    for (var m in model) {
                console.log(m.Content);
            }
</script>

ただし、「指定されたタイプのメンバー'Status'はLINQto Entitiesではサポートされていません。初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされています。」というエラーが表示されます。

どんな助けもありがたく受けました!

4

3 に答える 3

3

これを取得する理由は、LINQ クエリが SQL クエリに変換され、属性でStatusプロパティを指定[NotMapped]したため、テーブル スキーマで列が見つからず、エラーが発生するためです。

于 2012-10-08T07:45:54.263 に答える
0

EF 5.0 を使用していない場合 (以前のバージョンでは列挙型を直接使用できません)

モデルを変更する

新しいプロパティを追加する

public int StatusValue { get; set; }

次に、もう一方をに変更します

[NotMapped]
public SmsContentStatus Status 
{ 
   get {return (SmsContentStatus)StatusValue;}
   set {StatusValue = Convert.ToInt32(value); }
}

次に、エンティティへのすべての linq クエリで、intプロパティ ( StatusValue)を使用します。

var status = SmsContentStatus.Partial;
var content = db.SmsContents.Where(p => p.StatusValue == (int)status).FirstOrDefault();
//or rather db.SmsContents.FirstOrDefault(p => p.StatusValue == (int)status);
//but that's a detail.

編集

ビューがリストを表す必要がある場合は、クエリを次のように変更します

var content = db.SmsContents.Where(p => p.StatusValue == (int)status);

単一のオブジェクトを表す必要がある場合は、ビューのモデルを次のように変更します

@model Sample.Models.SmsContent
于 2012-10-08T09:18:53.140 に答える
0

SmsContentStatus エンティティをマップするか、マップする必要がある statusId を使用する必要があります。

于 2012-10-08T07:45:36.033 に答える