【问题标题】:How to parse Entity class to Custom Entity class with Extension?如何使用扩展将实体类解析为自定义实体类?
【发布时间】:2012-01-13 13:35:01
【问题描述】:

我想编写一个自定义类扩展。我有 EDMX 类,但我想解析为 CUSTOM 类。例如 Customer 类有 3 个属性(id、name、surname),而我的自定义 Customer 类有 3 个属性(id、name、surname)。我想使用扩展将List<Customer> 解析为List<MyCustomer>,但我该怎么做?

public partial class MyVisitorAdvertisement
{
    public int ID { get; set;}
    public int VID { get; set;}
    public int TID { get; set;}
    public string Detail{ get; set;}
    public DateTime Date { get; set;}
    public DateTime LastDate { get; set;}

    public MyVisitorAdvertisement()
    {
    //constructor
    }

    public List<MyVisitorAdvertisement> ListByID( int ID)
{
    List<MyVisitorAdvertisement> visitors = new List<MyVisitorAdvertisement>();
    using (var Ctx = new DomainRepository<VisitorAdvertisement>(new ProposalsEntities()))
    {
        foreach (var visitor in Ctx.Find<VisitorAdvertisement>(q => q.ID == ID).ToList())
        {
            MyVisitorAdvertisement visitoradvertisement = new MyVisitorAdvertisement();
            visitoradvertisement.ID = visitor.ID;
            // i dislike to do it. i think that how to make it a extention?    

            visitors.Add(visitoradvertisement);
        }
        return visitors;
    }
}
}

我想要的扩展:

public static List<TResult> (this IEnumerable<T> mylist) where TResult,T: class
{
  return //mylist parse to List<TResult>
}

【问题讨论】:

    标签: c# visual-studio-2010 oop c#-4.0


    【解决方案1】:

    类似:

    public static List<TResult> ListByID<TResult>(this IEnumerable<T> mylist) where TResult : VisitorAdvertisement where T: class
    {
       return Ctx.Find<TResult>(q => q.ID == ID).SelectMany(a => new TResult{ Id = a.Id}).ToList();
    }
    

    如果 VisitorAdvertisement 从具有 ID 的基础实体继承,那么您可以基于该 ID 进行限制,而不是开放从它派生的任何内容。抱歉,我一直弄错语法,我没有在 VS.Net 中编写代码

    【讨论】:

    • Not working 语法错误:我们可以向泛型方法添加约束吗?
    • 错误:找不到类型或命名空间名称“Tresult”(您是否缺少 using 指令或程序集引用?)
    • 但VisitorAdvertisement是一种类但它是一种扩展方法而不是特定方法
    【解决方案2】:

    看看 Automapper: http://automapper.codeplex.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2014-12-01
      相关资源
      最近更新 更多