WP7-不允许访问数据库文件

本文关键字:文件 数据库 访问 不允许 WP7- | 更新日期: 2023-09-27 17:49:32

这是我的类:

[Table]
public class Question
{
    [Column]
    public bool Sort { get; set; }
    [Column(IsPrimaryKey = true)]
    public int QuestionID { get; set; }
    [Column]
    public int Level { get; set; }
    [Column]
    public string Description { get; set; }
    [Column]
    public string Answer1 { get; set; }
    [Column]
    public string Answer2 { get; set; }
    [Column]
    public string Answer3 { get; set; }
    [Column]
    public string Answer4 { get; set; }
    [Column]
    public string RightAnswer { get; set; }
    [Column]
    public bool Show { get; set; }
}
public class QuestionContext : DataContext
{
    public QuestionContext(string connectionString)
        : base(connectionString)
    {
    }
    public Table<Question> Questions
    {
        get
        {
            return this.GetTable<Question>();
        }
    }
}

我正在尝试连接到我现有的数据库:

 private const string ConnectionString = @"appdata:App_Data'QuestionDb.sdf";
public GamePage()
{
    InitializeComponent();
    using (QuestionContext context = new QuestionContext(ConnectionString))
    {
        if (!context.DatabaseExists())
        {
            // create database if it does not exist
            context.CreateDatabase();
        }
        else
        {
            var questions = from o in context.Questions where o.Level == 1 && o.Show == false select o;
            var question = questions.FirstOrDefault();
        }
    }
}

我收到"不允许访问数据库文件"的错误。我想问题出在我的连接字符串上。它怎么了?如何访问文件夹App_Data中的SQLCE数据库?

WP7-不允许访问数据库文件

在app.config中添加以下

<connectionStrings>
  <add name="DataContext" 
       connectionString="Data source=DataDirectory|Database.sdf;"
       providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>

然后在ConfigurationManager的帮助下获取连接字符串。也许您需要添加对System.Configuration.的引用

private const string ConnectionString = ConfigurationManager.ConnectionStrings["DataContext"].ConnectionString

您可以在ConnectionString中了解更多关于DataDirectory的信息:http://msdn.microsoft.com/en-us/library/cc716756(v=vs.100(.aspx

您必须像这样组成连接字符串:

MyDataContext db = new MyDataContext("Data Source = 'appdata:/mydb.sdf'; File Mode = read only;");

数据库文件将是只读的。。。