LINQ to SQL을 사용하여 WP7 7.1 베타 2에서 매우 간단한 사용자 이름/암호 조합을 유지하려고합니다. 지금까지 모든 것이 예상대로 작동합니다 (아래의 저장소/모델 클래스 사용)LINQ to SQL 데이터베이스가 WP7 에뮬레이터에서 유지되지 않는 이유는 무엇입니까?
새 데이터베이스를 만들고 레코드를 삽입하고 해당 행을 쿼리하면 지속 된 사용자에게 아무런 문제가 없습니다. 그러나 다음 번에 에뮬레이터를 회전 할 때 "db.DatabaseExists()"표현식을 실행할 때 db 컨텍스트가 false를 반환합니다.
이 일반적인 동작은 에뮬레이터에서 발생합니까 아니면 세션간에이를 유지하도록 LINQ에 말하지 않습니까?
사전저장소 클래스
public class UserRepository : IDisposable
{
private readonly UserDataContext context;
public UserDataContext Context
{
get { return context; }
}
public UserRepository()
{
context = new UserDataContext(UserDataContext.DBConnectionString);
CreateDatabase();
}
private void CreateDatabase()
{
if (context.DatabaseExists() == false)
{
context.CreateDatabase();
}
}
public User GetByID(int id)
{
return context.GetTable<User>().FirstOrDefault(e => e.UserId.Equals(id));
}
public User GetByUsername(string username)
{
return context.GetTable<User>().FirstOrDefault(e => e.UserName.Equals(username));
}
public void Save(User user)
{
if (user.UserId > 0)
{
context.GetTable<User>().Attach(user, true);
}
else
{
context.GetTable<User>().InsertOnSubmit(user);
}
context.SubmitChanges();
}
public List<User> GetAll()
{
return context.GetTable<User>().ToList();
}
public int Count()
{
return context.GetTable<User>().Count();
}
public void Dispose()
{
if (context != null)
{
context.Dispose();
}
}
}
모델
[Table]
public class User
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
public int UserId { get; set; }
[Column]
public string UserName { get; set; }
[Column]
public string Password { get; set; }
}
상황
에 감사드립니다public class UserDataContext : DataContext
{
public static string DBConnectionString = "Data Source=isostore:/User.sdf";
public UserDataContext(string connectionString) : base(connectionString) { }
public Table<User> Users;
}