Может LINQ к SQL генерировал объекты быть разъединенным?

Попробуйте это, чтобы получить 4005900288646

//script/substring-before(substring-after(., "ean13: '"), "',")
11
задан swilliams 21 October 2008 в 18:17
поделиться

7 ответов

Все эти ответы и никакие ссылки! Возможно, я могу помочь:

Вещь атрибутов это damieng упоминается

Частичная вещь класса, которую упомянул Marcus King

Я томился через эту трудность пару раз, что я закончил тем, что делал на своем последнем проекте, использовал интерфейсы в качестве контракта, это совместно используется всеми различными проектами в решении, и наличие частичных классов реализует его.

[Table(Name="Products")]
public partial class Product: IProduct { }

И да, к сожалению, потребовалось некоторое отражательное волшебство заставить его работать на ПОСТЕПЕННО реализация.

В конце, если бы Вы действительно обеспокоены этим, я пошел бы с NHibernate (мне действительно не нравится он ни один), который делает точно, что Garry Shulter, кажется, описывает.

Надежда, которая помогает!

6
ответ дан 3 December 2019 в 07:40
поделиться

Моя команда, с которой борются с этой проблемой недавно. Я действительно хотел поддержать "незнание персистентности", подразумевая, что объекты области могли быть созданы, поскольку простой C# возражает, не будучи вынужденным наследоваться определенному базовому классу или загромоздить класс с набором атрибутов. Как Вы сказал, мы хотели смочь изменить слой персистентности независимо от бизнес-модели.

В конце мы решили, что LINQ не является способом пойти, если Вы хотите незнание персистентности. Мы заканчиваем тем, что писали слишком много отображающегося кода для преобразования между уровнем LINQ и нашим бизнес-слоем. Когда мы начали писать набор основанного на отражении кода, чтобы попытаться сделать эти отображения автоматически, мы поняли, что скатывались с кроличьей норы, с мало для показа для него.

Если незнание персистентности важно для Вас, Вы могли бы быть лучше обслужены с законченным ORM как NHIbernate.

3
ответ дан 3 December 2019 в 07:40
поделиться

Linq к SQL (или EF) не о незнании персистентности. Это об объектном представлении данных.

NHibernate является незнанием персистентности ORM, который можно искать.

2
ответ дан 3 December 2019 в 07:40
поделиться

О, эй я думаю, что нашел решение этого при наблюдении скринкастов Rob Conery на ASP.NET MVC. Прием к select в объект в Вашем LINQ к SQL-запросу.

public IQueryable<LinqExample.Core.Person> GetAll() {
    var people = from pe in this.db.Persons
                 select new Person {
                     Id = pe.id,
                     FirstName = pe.fname,
                     LastName = pe.lname,
                     Reports = this.GetReports(pe.id)
                 };
    return people;
}

Это позволяет нам, Вы определяете a Person классифицируйте в другом месте в Вашем коде. Я вел блог об этом больше подробно.

2
ответ дан 3 December 2019 в 07:40
поделиться

Я недавно достиг этого путем создания POCOs сам и вручную создания XML отображающийся файл для базы данных. Требуется немного физического труда, но это дает желаемый эффект.

Вот сообщение в блоге, которое я нашел полезным для запущения Вас.

2
ответ дан 3 December 2019 в 07:40
поделиться

Scott Hanselman сделал экран, говорящий о asp.net DynamicData, где он привык Linq Для классов Sql. Хотя он не решал конкретную проблему, я думаю, что общее понятие все еще работало бы. Его подход должен был создать отдельный частичный класс, который имел то же имя как класс, Product в Вашем случае, который был сгенерирован dbml. Затем у Вас должен всегда быть a Product класс, который существует за пределами того, что LINQ генерирует и просто "расширяет", что он делает.

1
ответ дан 3 December 2019 в 07:40
поделиться

Просто скопируйте сгенерированный код в свои собственные классы и выключите генерацию кода. Волшебство еще находится в атрибутах ничто.

Кроме того, можно записать собственной плоскости объекты CLR без атрибутов и использовать внешний XML отображающийся файл для описания отношений между объектами и базой данных. Больше информации может быть найдено в LINQ к документации SQL относительно MSDN.

0
ответ дан 3 December 2019 в 07:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: