Использование Linq с существующими объектами - PullRequest
0 голосов
/ 08 мая 2011

Моя система имеет этот шаблон DAO-> Объекты-> Фасад-> Вид

поэтому у меня есть DAO для запроса базы данных и создания экземпляров объектов, у этих объектов есть только атрибуты (просто контейнер / сущность), я хочу использовать LINQ в части DAO, но я не понимаю, как передать мои объекты, потому что 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, но я не хочу изменять всю структуру объекта, чтобы минимизировать влияние.

Любой совет?

1 Ответ

1 голос
/ 13 мая 2011

Я не совсем уверен, о чем вы говорите с вашей текущей настройкой, но я думаю, что вы спрашиваете, как повторно использовать объекты, которые у вас есть в данный момент, с Linq to SQL, а не генерировать новые из файла dbml,Я прав?

Если так, у вас есть несколько вариантов.Вы можете использовать атрибуты для украшения ваших существующих объектов, чтобы вы могли заполнить их L2S, или вы можете создавать файлы отображения.

Некоторая информация здесь: http://www.sidarok.com/web/blog/content/2008/10/14/achieving-poco-s-in-linq-to-sql.html

Я использую Linq для 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);
...