У меня установленная база данных SQL Server. Затем я сгенерировал модель Entity Framework в Консольном приложении для проверки выбора, редактирования и добавления в базу данных. Все прошло хорошо.Entity Framework для разных проектов - экономия?
Теперь я перехожу к своему окончательному физическому дизайну своих WinForms и WebApp. Итак, я решил сделать проект в отдельных проектах. Я переместил Entity Framework в проект Data, я создал проект Services, и у меня все еще есть консольное приложение в качестве тестового приложения (все в том же решении).
У меня есть ClassLib с объектами передачи данных, которые могут проходить между моими слоями. Таким образом, мой уровень графического интерфейса и уровень сервиса не знают об объектной структуре. У меня есть вспомогательные методы в моей EF проекта, которые преобразуют данные EF в список и т.д. ...
Eg метода хелперов:
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 в каждом из моих вспомогательных классов ... И затем передайте список <> дочерних объектов вместе с одним классом родителя для метода сохранения ... и затем преобразуйте Dtos для моделей EF, а затем сохранить их таким образом?
Это приемлемый план?
Это было бы здорово, если бы вы Коула показать пример. Благодарю. – Craig
отредактировал мой ответ, надеюсь, что ничего не забыл .. – AyKarsi
Я не совсем понимаю - поэтому я искал больше и наткнулся на учебник, в котором показывался человек, делающий приложение EF, используя консольное приложение. Она ссылалась на проект EF непосредственно из консольного приложения. Это все легко, но ... это кажется неправильным. Разумеется, должен быть сервисный уровень, и никакого взаимодействия между проектом GUI и проектом EF, не так ли? – Craig