linq-to-sql - 为什么 LINQ to SQL 数据库没有保留在 WP7 模拟器中?

标签 linq-to-sql windows-phone-7

我正在尝试使用 LINQ to SQL 在 WP7 7.1 beta 2 中保留一个非常简单的用户名/密码组合。到目前为止,一切都按预期工作(使用下面的存储库/模型类)

我可以创建一个新数据库,插入一条记录并查询该行(并且它返回持久用户没问题)。但是下次我启动模拟器时,当我执行这个表达式“db.DatabaseExists()”时,db上下文返回false

这是模拟器的正常行为还是我没有告诉 LINQ 在 session 之间保持这种行为?

先感谢您

存储库类

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;
}

最佳答案

独立存储资源管理器允许您创建和恢复模拟器的独立存储的快照。您可能希望在关闭模拟器之前使用它来保存数据库的状态,然后在重新启动模拟器后恢复它。

http://msdn.microsoft.com/en-us/library/hh286408(v=vs.92).aspx

关于linq-to-sql - 为什么 LINQ to SQL 数据库没有保留在 WP7 模拟器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047894/

相关文章:

c# - Silverlight:当我调用 NavigationService.Navigate 时布局发生变化

silverlight - 添加到数据绑定(bind) ListBox 的动画项目

C# - 常量值 '4294901760' 无法转换为 'int'

windows-phone-7 - Windows Phone 7 : resume to the selected pivot item

c# - 处理 LINQ to SQL DataContext 有什么好处?

vb.net - linq2sql的交叉连接问题

windows-phone-7 - Dotfuscator 删除 Windows Phone 7 语言支持?

c# - linq to sql左连接,需要检查右表是否为空

c# - LINQ:获取具有给定属性最大值的行

Linq 到 SQL : order by value in related table