О каком размере кода мы говорим? Если у Вас только есть 10-20 классов, Вам, вероятно, не нужно к (и не был должен) сверхорганизовывать Ваш код в пакеты только ради него.
, Поскольку Ваш проект растет, первое различие, которое Вы хотите сделать, состоит в том, чтобы разделить код пользовательского интерфейса от базовой модели данных и логики. Чисто разделение слоев крайне важно, чтобы быть в состоянии сделать надлежащее поблочное тестирование.
, Если Вы испытываете затруднения избавиться от круговых зависимостей, они, вероятно, имеют место, классы являются на самом деле взаимозависимыми, и должны находиться в том же пакете.
Разбирание в уровнях абстракции является, вероятно, одним из самых важных аспектов при разработке полной структуры кода.
There's a really good library called FileHelpers which is a) 100% free, b) fully in C#, and it can easily import any kind of text-based file - comma-separated, tab-separated, fixed width and so on.
You should have no trouble using this to load your CSV file into in-memory objects and storing those in SQL Server using ADO.NET.
In FileHelpers, you first need to have a class that describes your data, e.g. a "Customer" class (or whatever it is you're importing).
Then, you can import a file using code something like this:
FileHelperEngine<Customer> engine = new FileHelperEngine<Customer>();
Customer[] dataLoaded = engine.ReadFile(fileName);
Once you have your array of customers, you can either just iterate through that and save the data (typically inside a transaction) with e.g. a stored procedure or a ad-hoc SQL query:
using(TransactionScope ts = new TransactionScope())
{
foreach(Customer c in dataLoadad)
{
SaveCustomer(c);
}
ts.Complete();
}
or you could convert the customer array to a DataTable and use SqlBulkCopy to bulk insert that into your SQL Server database - there are lots of options!
UPDATE:
Do you have a [DelimitedRecord]
or another of those attributes on your BlackListDevice
class?
Исправлено путем добавления отдельного класса для загрузки файлов, работает как шарм с использованием FileHelper.