1

これは私のクラスです:

[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 データベースにアクセスするにはどうすればよいですか?

4

2 に答える 2

0

次のように接続文字列を構成する必要があります。

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

データベース ファイルは読み取り専用になります...

于 2012-12-23T13:46:30.243 に答える