Работа с двумя разными таблицами с одинаковой структурой - PullRequest
3 голосов
/ 01 февраля 2012

У меня следующий вопрос: У меня есть две таблицы с одинаковой структурой в базе данных SQL-CE в моем проекте WP7. И я хочу динамически использовать одну из этих таблиц в зависимости от некоторых условий. Например:

[Table]
public class myTable1 : someStructure { }

[Table]
public class myTable2 : someStructure { }

[Table]
public class someStructure
{
    [Column (IsPrimaryKey = true, IsDbGenerated = true)]
    public Int32 ID { get; set; }

    [Column]
    public String Name { get; set; }
}

public class myDB : DataContext
{
    public myDB() : base("Data Source=isostore:/main.sdf") { }

    public Table<myTable1> myTable1;
    public Table<myTable2> myTable2;
}

public partial class MainPage : PhoneApplicationPage
{
    private void doit_Click(object sender, RoutedEventArgs e)
    {
        var _myDB = new myDB();
        if (!_myDB.DatabaseExists())
            _myDB.CreateDatabase();

        Table<someStructure> _table;
        if ( SOMECONDITION )
            _table = _myDB.myTable1;
        else
            _table = _myDB.myTable2;

        _table.InsertOnSubmit(new someStructure { Name = "aaa" });

        _myDB.SubmitChanges();
    }
}

Я получаю сообщение об ошибке Unable to create database because mapped class 'databasetest1.myTable1' has zero members. в строке _myDB.CreateDatabase() и предупреждения о том, что тип someStructure нельзя преобразовать в тип myTable1 и / или myTable2.

Что я должен сделать, чтобы решить эту задачу?

Заранее спасибо.

1 Ответ

0 голосов
/ 08 февраля 2012

Насколько я пытался, хотя я не получил его напрямую от парней из СЕ, я никогда не мог получить [Table], чтобы иметь базовый класс с какими-либо атрибутами [Column]. Возможно, вы решите использовать шаблоны T4, чтобы решить эту проблему, просто сгенерировав нужные вам биты.

Посмотрите на это и посмотрите, поможет ли это. Я сам не пробовал, но выглядит многообещающе ...

http://blogs.msdn.com/b/writingdata_services/archive/2012/01/25/new-and-improved-t4-template-for-odata-client-and-local-database.aspx

...