将 Linq 与现有对象一起使用

Posted

技术标签:

【中文标题】将 Linq 与现有对象一起使用【英文标题】:Using Linq with existing Objects 【发布时间】:2011-08-20 22:44:46 【问题描述】:

我的系统有这个模式DAO->Objects->facade->View

所以我有一个 DAO 来查询数据库和实例化对象,这个对象只有属性(只是一个容器/实体),我想在 DAO 部分使用 LINQ,但我不知道如何传递我的对象,因为 LINQ 生成每桌 1 个。

namespace ykpObjects.Objects

public class Customer
    
        public string name  get; set; 
        public Cidade()
        
            cidadeID = 0;
        
    


namespace ykpData.Components.MSSQL


    public class CustomerDC : DataComponentCM, ICustomerDC
    

        Customer ICustomerDC.RecuperaPorID(int CustomerID)
        
            Customer Customer = new Customer();

            using (MDDataContext omd = new MDDataContext(base.PreencherConexao()))
            
                sp_mkp_Customer_SelectByIDResult result = omd.sp_mkp_Customer_SelectByID(CustomerID).SingleOrDefault();
                if (result == null)
                    return null;

                Customer.name = result.name;


                return Customer;
            
        
    

我使用 DAO 调用 sprocs,所以我得到 sproc 结果并实例化 Customer 的一个对象,并将其传递给控制,现在我想更改为 linq,但我不想更改所有对象结构以最小化影响。

有什么建议吗?

【问题讨论】:

你设计的Objects 部分对我来说没有任何意义。请详细说明。 请澄清您的问题。 我使用 DAO 调用 sprocs,所以我得到了 sproc 结果并实例化了 Customer 的一个对象,例如,并将其传递给控制,现在我想更改为 linq,但我不想更改所有对象结构尽量减少影响。 【参考方案1】:

我不确定您在当前设置中谈论的是什么,但我认为您是在问如何通过 Linq to SQL 重用您当前拥有的对象,而不是从 dbml 文件生成新对象.我说的对吗?

如果是这样,您有几个选择。您可以使用属性来装饰现有对象,以便使用 L2S 填充它们,或者您可以创建映射文件。

这里有一些信息:http://www.sidarok.com/web/blog/content/2008/10/14/achieving-poco-s-in-linq-to-sql.html

我使用带有属性的 Linq to SQL 来实现“代码优先”的解决方案,这是一个示例类:

[Table(Name = "Countries")]    
public class Country

    [Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
    public int CountryId  get; set; 

    [Column]
    public string iso2  get; set; 

    [Column]
    public string iso3  get; set; 

    [Column]
    public string name_en  get; set; 

要使用这个对象:

var context = new DataContext(ConnectionString);
var data = context.GetTable<Country>().Where(c => c.CountryId == 1);

【讨论】:

完全正确!,还有一个问题,我如何为这些对象设置数据库?

以上是关于将 Linq 与现有对象一起使用的主要内容,如果未能解决你的问题,请参考以下文章

将 LinQ 与多列分组一起使用

何时使用 .First 以及何时将 .FirstOrDefault 与 LINQ 一起使用?

将 IQueryable 与 Linq 一起使用

是否可以将全文搜索 (FTS) 与 LINQ 一起使用?

似乎无法将 Linq 与 ASP.Net 导航菜单一起使用

如何将 XPath 与 XElement 或 LINQ 一起使用?