使用具有相同结构的两个不同表

时间:2012-02-01 18:54:45

标签: c# windows-phone-7 sql-server-ce

我有以下问题: 在我的WP7项目中,我在SQL-CE数据库中有两个具有相同结构的表。 我想根据某些条件动态使用其中一个表。例如:

[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 :(得分:0)

据我所知,虽然我没有直接从CE人那里得到它,但我从来没有能够让[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