У меня установлена база данных SQL Server.Затем я сгенерировал модель Entity Framework в консольном приложении, чтобы проверить выбор, редактирование и добавление в базу данных.Все прошло хорошо.
Сейчас я больше двигаюсь к окончательному физическому оформлению моих WinForms и WebApp.Итак, я решил сделать проект в отдельных проектах.Я переместил Entity Framework в проект Data, создал проект Services и у меня все еще есть консольное приложение в качестве тестового приложения (все в одном решении).
У меня есть ClassLib с объектами передачи данных впройти между моими слоями.Так что мой уровень GUI и уровень сервиса не знают Entity Framework.В моем проекте EF есть вспомогательные методы, которые преобразуют данные EF в List и т. Д. *
Например, вспомогательный метод:
using ClassLib;
namespace Data
{
public class PayeeDAL : EntityBase
{
public static List<PayeeDto> GetPayees()
{
var payees = (from payee in Db.payees
select payee).ToList();
List<PayeeDto> reply = new List<PayeeDto>();
foreach (var pa in payees)
{
PayeeDto p = new PayeeDto
{
PayeeId = pa.payee_id,
Name = pa.name,
Deleted = pa.deleted == null
};
reply.Add(p);
}
return reply;
}
}
}
И мой объект передачи данных выглядит следующим образом:
namespace ClassLib
{
public class PayeeDto
{
public int PayeeId { get; set; }
public string Name { get; set; }
public bool Deleted { get; set; }
}
}
Итак, мой выбор хорошо работает с этим дизайном ... но ... не знаю, как справиться с сохранением.
В моем консольном приложении, когда EF был доступен дляя, я сделал это:
db.AddToaccount_transaction(ac);
account_transaction_line atl = new account_transaction_line
{
amount = amount,
cost_centre =
db.cost_centre.FirstOrDefault(
cc => cc.cost_centre_id == costcentreid),
sub_category =
db.sub_category.First(
sc => sc.sub_category_id == subcategoryId),
account_transaction = ac,
budget = db.budgets.FirstOrDefault(b => b.budget_id == budgetid)
};
db.AddToaccount_transaction_line(atl);
}
db.SaveChanges();
Но теперь у меня нет доступа к .AddTo .... и .SaveChanges ... В моем консольном приложении я бы создал родительский объект, изатем добавьте несколько дочерних объектов ... и затем добавьте дочерние объекты к родительскому объекту и сохраните.
Но как бы это было сделано в моей новой структуре?Я думаю, что у меня был бы метод Save в каждом из моих вспомогательных классов ... А затем передал бы List <> дочерних объектов вместе с единственным родительским классом в метод save ... и затем преобразовал Dtosв модели EF, а затем сохранить его таким образом?
Это приемлемый план?