может кто-нибудь указать мне на пример или кратко описывать, как можно было бы создать пользовательскую реализацию WCF RIA-сервисов Domainservice, используя LINQ для SQL В качестве слоя доступа к данным, но без использования файла .dbml (это связано с тем, что модель linq to SQL генерируется пользовательским инструментом, сильно прорезительно, и довольно большая база данных С 50+ таблицами) и без мастера VS2010 для создания доменсервиса (мастер зависит от доступов файла .dbml)
Вот действительно простая оболочка того, что я пробовал так далеко:
[EnableClientAccess()]
public class SubscriptionService : DomainService
{
[Query(IsDefault = true)]
public IQueryable<Subscription> GetSubscriptionList()
{
SubscriptionDataContext dc = new SubscriptionDataContext();
var subs = dc.Subscription.Where(x => x.Status == STATUS.Active)
.Select(x =>
new Subscription
{
ID = x.ID,
Name = x.Name
}).ToList();
return subs.AsQueryable();
}
public void InsertSubscription(Subscription sub)
{
if (!sub.ID.IsEmpty())
{
SubscriptionDataContext dc = new SubscriptionDataContext();
Subscription tmpSub = dc.GetByID<Subscription>(sub.ID);
if (tmpSub != null)
{
tmpSub.Name = sub.Name;
dc.Save(tmpSub);
}
else
{
tmpSub = new Subscription();
tmpSub.Name = sub.Name;
dc.Save(tmpSub);
}
}
}
public void UpdateSubscription(Subscription sub)
{
if (!sub.ID.IsEmpty())
{
SubscriptionDataContext dc = new SubscriptionDataContext();
Subscription tmpSub = dc.GetByID<Subscription>(sub.ID);
if (tmpSub != null)
{
tmpSub.Name = sub.Name;
dc.Save(tmpSub);
}
}
}
public void DeleteSubscription(Subscription sub)
{
if (!sub.ID.IsEmpty())
{
SubscriptionDataContext dc = new SubscriptionDataContext();
Subscription tmpSub = dc.GetByID<Subscription>(sub.ID);
if (tmpSub != null)
{
dc.Delete(tmpSub);
}
}
}
}
Это, кажется, работает до сих пор. Кто-нибудь видят какие-либо проблемы с таким подходом, который мне может отсутствовать? Я не хочу идти слишком далеко по самой дороге с этим, если кто-то уже пробовал так и нашел с ним некоторые серьезные проблемы.
Спасибо за вклад каждого.