我在检测导航属性的更改时遇到问题:
我的测试模型如下所示:
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 …
正如标题所述,为什么任何对象应该继承ToString()方法(例如在C#或Java中)并以某种方式关注将其转换为String?在某些情况下,这不违反单一责任原则吗?我的意思是,如果你的对象不需要转换为字符串,你最终会对你的对象有更多的响应能力.
c# java oop single-responsibility-principle solid-principles
当使用大于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)
不应该等待两个信号吗?在上面的代码中,它根本不会等待,因此调用版本,结果是崩溃!