小编Mon*_*nes的帖子

实体框架不会检测导航属性的更改

我在检测导航属性的更改时遇到问题:

我的测试模型如下所示:

public class Person
{
    public int Id { get; set; }

    public string Name { get; set; }

    public virtual Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }

    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我创建并保存了一个Person类型的对象,同时分配了Name和Address属性.我的问题是,如果我从数据库中取回Person对象并更改Address属性(例如Null),那么ef不会检测到更改!我的代码是这样的:

using (var ctx = new EFContext())
{
    Person p = ctx.People.First();
    //p.Address IS NOT NULL!
    p.Address = null;
    var entry = ctx.Entry(p);
}
Run Code Online (Sandbox Code Playgroud)

为什么entry.State 不变

编辑:如果我调用SaveChanges,记录将正确保存(地址变为空)!

编辑2:我已经创建了billy建议的外键属性,如果我在visual …

c# entity-framework-4

15
推荐指数
2
解决办法
1万
查看次数

ToString()方法是否违反了SRP?

正如标题所述,为什么任何对象应该继承ToString()方法(例如在C#或Java中)并以某种方式关注将其转换为String?在某些情况下,这不违反单一责任原则吗?我的意思是,如果你的对象不需要转换为字符串,你最终会对你的对象有更多的响应能力.

c# java oop single-responsibility-principle solid-principles

3
推荐指数
1
解决办法
334
查看次数

ios信号量等待不等

当使用大于0的值创建信号量时,使用dispatch_semaphore_wait(..)时遇到问题

sema = dispatch_semaphore_create(2);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    //signals here
});

dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);
Run Code Online (Sandbox Code Playgroud)

不应该等待两个信号吗?在上面的代码中,它根本不会等待,因此调用版本,结果是崩溃!

semaphore grand-central-dispatch ios

3
推荐指数
1
解决办法
3558
查看次数