TLDR: Почему Entity Framework добавляет дополнительный путь в конец моего источника данных? Что мне нужно сделать, чтобы использовать эту структуру? Есть ли другой способ справиться с этим?Использование базового объекта Контекст для первого кода структуры Entity Framework
Я пишу базовую программу winforms SQL Server CE для хранения некоторых данных. У меня первоначально был 1 контекст, который будет использоваться для взаимодействия с 1 классом. Теперь я хочу добавить еще один класс, и поэтому я реорганизовал базовый контекст, из которого может быть получен исходный контекст. У меня есть код, хотя я не могу создать с ним какую-либо базу данных.
Я беру путь от пользователя к базе данных и устанавливаю | DataDirectory |, который я использую для источника данных.
<add name="MonsterContext"
connectionString="Data Source=|DataDirectory|; Persist Security Info=False"
providerName="System.Data.SqlServerCe.4.0" />
Я намереваюсь для источника данных, чтобы выглядеть как
C:Path\To\DatabaseFile.sdf
но выходит как
C:\Path\To\DatabaseFile.sdf\Namespace.BaseContext`1[Namespace.ModelClass].sdf ]"}
Я думаю, что этот путь показывает, что она строит свой собственный источник на основе EF по умолчанию.
Моя база Контекст:
public class EntityContext<T> : DbContext where T : class
{
public string TableName { get; set; }
public EntityContext()
: base("name=MonsterContext")
{
}
public EntityContext(string tableName)
{
this.TableName = tableName;
}
public DbSet<T> Entities { get; set; }
}
И мой производный Контекст:
public class MonsterReader : Reader<Monster>
{
private List<Monster> monsters;
public List<Monster> Monsters
{
get
{
if (monsters == null)
{
monsters = ReadAll();
}
return monsters;
}
private set { monsters = value; }
}
public MonsterReader(string file)
: base(file)
{ }
public MonsterReader(Stream reader)
: base(reader)
{ }
public void CreateMonsterDatabase(IEnumerable<Monster> monsters)
{
CreateDatabase(monsters, TableName);
}
private string TableName { get; set; }
}