有没有人知道任何命名约定规则/指南规定何时使用"To"前缀(myVariable.ToList()),"As"前缀(myVariable.AsEnumerable())或"Get"前缀(myVariable.GetHashCode())?
(使用Spring数据JPA)我有两个实体Parent和Child他们之间的一对多/多对一双向关系.我@NamedEntityGraph像这样添加一个父实体:
@Entity
@NamedEntityGraph(name = "Parent.Offspring", attributeNodes = @NamedAttributeNodes("children"))
public class Parent{
//blah blah blah
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
Set<Child> children;
//blah blah blah
}
Run Code Online (Sandbox Code Playgroud)
请注意,Parent的子项的获取类型是LAZY.这是故意的.当我查询个别父母时,我并不总是急于加载孩子.通常我可以使用我的命名实体图来按需加载孩子,可以这么说.但.....
有一种特殊的情况,我想查询一个或多个父母,并急切地加载他们的孩子.除此之外,我还需要能够以编程方式构建此查询.Spring Data提供了JpaSpecificationExecutor,它允许我们构建动态查询,但我无法弄清楚如何将它与实体图一起用于在这种特定情况下急切加载子项.这甚至可能吗?有没有其他方法可以使用规范急切加载到许多实体?
可以说我有以下服务和组件:
public interface IService
{
void DoWork();
}
public class ServiceA : IService
{
private readonly string _name;
public ServiceA(string name)
{
_name = name;
}
public void DoWork()
{
//ServiceA DoWork implementation
}
}
public class ServiceB : IService
{
private readonly string _name;
public ServiceB(string name)
{
_name = name;
}
public void DoWork()
{
//ServiceB DoWork implementation
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,每个组件都使用构造函数参数name.让我们说这name是在运行时确定的.
我一直在浏览AutoFac文档,试图找到一种类型安全的方法来解决这样的组件,而不必直接引用容器.如果我只有一个实现,IService那么我可以使用Delegate Factory将runtime参数传递给构造函数.但是,我有两个实现,并且还应该在运行时确定应该使用的实现.如果我没有name构造函数参数,那么我可以通过Key注册这两个组件,并使用IIndex注册
我无法弄清楚如何做到这两点.有没有办法我能以某种方式结合代表工厂和IIndex组件解决方案的使用?或者是否有另一种方法来注册和解决这两个组件而无需直接引用容器?
使用Json.NET将JSON字符串反序列化为对象时,如何在JSON stirng中存在键/属性,但是允许NULL值?
例如:
可以说我有一个类/对象......
[DataContract]
public class Car
{
[DataMember(IsRequired = true)]
public string Vin {get; set;}
[DataMember(IsRequired = true)]
public string Color {get; set;}
public string Description {get; ;set}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,VIN和Color是必需的,如果JSON字符串中缺少其中任何一个,则会抛出异常.但是,我们可以说,在反序列化后,Description属性是否具有值是可选的.换句话说,NULL是有效值.有两种方法可以在JSON字符串中实现这一点:
1)
{
"vin": "blahblahblah7",
"color": "blue",
"description": null
}
Run Code Online (Sandbox Code Playgroud)
或2)
{
"vin": "blahblahblah7",
"color": "blue"
}
Run Code Online (Sandbox Code Playgroud)
问题是我不想假设Description值应该为NULL,因为它的键/值对被排除在JSON字符串之外.我希望JSON的发送者明确将其设置为NULL.如果情况#2发生,我想检测它并回复错误消息.那么我如何要求键/值对存在,但接受NULL作为值?
如果它有帮助,我试图在ASP.NET Web API项目的上下文中解决这个问题.