【问题标题】:Returning custom class from DAL?从 DAL 返回自定义类?
【发布时间】:2011-03-25 10:35:14
【问题描述】:

我有一个具有以下属性的对象

Books
----------
ID , Name

现在,我想为表示层中的网格视图返回一个对象,该对象具有比原始对象更多的属性

Gridview Object
--------------- 
ID, Name, Quantity, Location, ISBNNO, LastIssued

我目前没有任何由这些属性组成的业务对象,我不想仅仅为了网格视图而创建它。

如何创建和返回自定义 像这样的物体在飞行中?我是 DTO 的新手。谁能给我一个 在我的 DAL 中返回 DTO 的示例 ?

谢谢, 达米安。

【问题讨论】:

  • 当您不想为您的应用程序创建对象时,您创建对象的目的是什么?
  • 对不起,我的意思是创建一个业务对象文件。我的每个业务对象都在一个单独的 cs 文件中。
  • 是的,每个类都应该在它自己的代码文件中。请不要误会我的意思,但是在它自己的代码文件中创建一个类的问题在哪里?我觉得我有点困惑。
  • 对不起 PVitt,问题是我最终为每个 gridview 提供了很多单独的类文件。在我的例子中,有 150 个。所以我认为也许有某种方法可以将它们放在单个类文件中,或者只是从 DAL 创建并返回一个对象。

标签: c# asp.net business-objects


【解决方案1】:

如果你不想弄乱你的数据库对象,为它创建一个装饰器

public class myGVObject
{
    public Book { get; set; }

    public int Quantity { get; set; }
    public string Location { get; set; }
    public string ISBNNO { get; set; }
    public DateTime LastIssued { get; set; }
}

并在您的 gridView 中使用:

<asp:Label id="lblBookId" text="<%# Eval("Book.ID") %>" />
<asp:Label id="lblLastIssue" text="<%# Eval("LastIssued") %>" />

【讨论】:

  • 谢谢 balezandre。你说的对。是单独创建一个装饰器对象还是继承上一个类的一些属性好不好?
【解决方案2】:

这是我在谷歌上找到的。有帮助吗?

http://www.codeproject.com/KB/cs/datatransferobject.aspx

http://aspalliance.com/1215

我认为你可以扩展你的 book 类或继承它。

【讨论】:

    【解决方案3】:

    你如何投影你的对象在运行中的 Linq 查询中?

    var result = from record in datastore
                 select new
                 {
                     ID = record.ID,
                     Name = record.Name,
                     Quantity = record.Quantity,
                     Location = record.Location,
                     ISBNNO = record.ISBN,
                     LastIssued = record.LastIssued
                 };
    GridView1.DataSource = result;
    GridView1.DataBind();
    

    【讨论】:

    • 嗨,这似乎是一个不错的选择,但我在多个页面上使用网格,所以我会使用装饰器对象。
    猜你喜欢
    • 2016-04-15
    • 1970-01-01
    • 2011-02-07
    • 2011-01-03
    • 1970-01-01
    • 2014-03-26
    • 2013-05-10
    • 2016-12-22
    • 1970-01-01
    相关资源
    最近更新 更多