在飞行中将数据结果重新塑造成不同的自定义模型

时间:2014-12-03 06:42:52

标签: asp.net linq entity-framework

我们假设我有一个名为Gift的表,其中有几个字段。

Gift{
  Field1,
  Field2,
  Field3
}

我有一个WEB API函数,用户/ admin可以通过它检索Gift的记录。但是,我想阻止Field3向用户公开,这意味着只有管理员才能查看所有3个字段。

以下是我的模型类定义:

public class OM_Gift_FE
{
    public string Field1 { set; get; }
    public string Field2 { set; get; }

    public static implicit operator OM_Gift_FE(OM_Gift_BO gift_bo){
        return new OM_Gift_FE
        {
            Field1 = gift_bo.Field1,
            Field2 = gift_bo.Field2
        };
    }
}

public class OM_Gift_BO
{
    public string Field1 { set; get; }
    public string Field2 { set; get; }
    public string Field3 { set; get; }
}

在我的一个API方法中:

    List<OM_Gift_EF> bidGifts;

    if (userLevel > 2)  // admin user at back office
    {
        bidGifts = objEntity.ExecuteStoreQuery<OM_Gift_BO>("SELECT * FROM gift").ToList();
    }
    else    // user at front end
    {
        bidGifts = objEntity.ExecuteStoreQuery<OM_Gift_FE>("SELECT * FROM gift").ToList();
    }
    // continue to process bidGifts

当然它失败了,最简单的解决方法似乎是引入另一个List变量,并在if和else块中重复以下代码。但我很好奇我是否能用一个变量简洁地处理这个问题?

非常感谢。

0 个答案:

没有答案