虽然其他问题已经解决了更广泛的序列和模块类别,但我提出这个非常具体的问题:
"你为字典使用什么命名约定?为什么?"
我一直在考虑的一些命名约定样本:
# 'value' is the data type stored in the map, while 'key' is the type of key
value_for_key={key1:value1, key2,value2}
value_key={key1:value1, key2,value2}
v_value_k_key={key1:value1, key2,value2}
Run Code Online (Sandbox Code Playgroud)
不要因为"因为我的工作告诉我"而回答"为什么",而不是非常有帮助.推动选择的原因更为重要.除了可读性之外,字典命名约定还有其他任何好的注意事项吗?
编辑:
选择答案: value_key_map
选择答案的原因:允许代码审阅者快速,轻松地找出地图的关键字和值,以及它是一张地图而无需查看其他任何地方.
我有一个实体:
public class Tag {
public int Id { get; set; }
public string Word { get; set; }
// other properties...
// and a collection of blogposts:
public ICollection<Post> Posts { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和模型:
public class TagModel {
public int Id { get; set; }
public string Word { get; set; }
// other properties...
// and a collection of blogposts:
public int PostsCount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我查询这样的实体(通过EF或NH):
var tagsAnon = …Run Code Online (Sandbox Code Playgroud) # ! /usr/bin/env python
# -*- coding: utf-8 -*-
# login_frontend.py
""" Python 2.7.3
Cherrypy 3.2.2
PostgreSQL 9.1
psycopy2 2.4.5
SQLAlchemy 0.7.10
"""
Run Code Online (Sandbox Code Playgroud)
我在一个Python/SQLAlchemy类中连接四个表时遇到问题.我正在尝试这个,所以我可以迭代这个类的实例,而不是我从连接ORM表中得到的命名元组.
为什么这一切?因为我已经开始这样了,而且我走得太远,只是离开它.此外,它必须是可能的,所以我想知道它是如何完成的.
对于这个项目(cherrypy web-frontend),我得到了一个已经完成的包含表类的模块.我把它移到了这篇文章的底部,因为也许你甚至都不需要它.
以下只是联接多表类尝试的一个示例.我选择了一个简单的案例,其中只有两个表和一个联结表.在这里,我不会写入这些连接表,但它在其他地方是必要的.这就是为什么类可以很好地解决这个问题.
这是给定的表类模块和这两个网站的示例的组合:
- 针对多个表映射类
- SQLAlchemy:一个类 - 两个表
class JoinUserGroupPerson (Base):
persons = md.tables['persons']
users = md.tables['users']
user_groups = md.tables['user_groups']
groups = md.tables['groups']
user_group_person =(
join(persons, users, persons.c.id == users.c.id).
join(user_groups, users.c.id == user_groups.c.user_id).
join(groups, groups.c.id == user_groups.c.group_id))
__table__ = user_group_person
""" I expanded the redefinition of 'id' to three tables,
and …Run Code Online (Sandbox Code Playgroud) 我想使用EF存储包含基元列表的对象.
public class MyObject {
public int Id {get;set;}
public virtual IList<int> Numbers {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我知道EF无法存储,但我想知道解决这个问题的可能解决方案.
我能想到的2个解决方案是:
1. 创建一个具有Id和整数值的虚拟对象,例如
public class MyObject {
public int Id {get;set;}
public virtual IList<MyInt> Numbers {get;set;}
}
public class MyInt {
public int Id {get;set;}
public int Number {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
2. 将列表值存储为blob,例如
public class MyObject {
public int Id {get;set;}
/// use NumbersValue to persist/load the list values
public string NumbersValue {get;set;}
[NotMapped]
public virtual IList<int> Numbers { …Run Code Online (Sandbox Code Playgroud) 主题说明了一切......到目前为止,我认为人们没有在吸气剂和/或制定者上声明注释的优势.对我来说,这只会带来在类上传播注释的缺点,这会使类更难以理解.
将注释放在字段上会明显减少需要帮助时要发布的代码量.这只是一个很小的优势.但是对方法进行注释对我没有任何意义.
构建我的Web服务时出现此错误:
错误3004:从第323行开始的映射片段中的问题:没有为属性JE_TRN_HS.JE_HDR_HSJE_HDR_KEY指定映射.实体是类型[TESTCPModel.JE_TRN_HS
这就是发生的事情.我从现有数据库创建了这个实体数据模型.我添加了2个表并重建了Web服务.构建成功.
然后我在两个表之间添加了一个关联.当我尝试重建它失败时显示上面的错误消息!
现在这里是踢球者!我删除了新添加的协会并重建.构建失败并显示相同的错误消息!?我可以摆脱这个错误的唯一方法是,如果我删除第二个表,重建并重新添加第二个表?
我一直在寻找解决这个问题的方法!谢谢Steve
Elasticsearch专家,
我一直无法找到一种简单的方法来告诉ElasticSearch为所有索引(以及所有文档类型)中添加的所有文档插入_timestamp字段.
我看到了一个特定类型的例子:http: //www.elasticsearch.org/guide/reference/mapping/timestamp-field/
并且还查看特定类型的所有索引的示例(使用_all):http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping/
但是我无法找到任何关于添加它的文档,无论索引和类型如何,都会添加它.
通过我的spring mvc web应用程序,我有注释的映射工作,但是,它们区分大小写.我找不到让它们不区分大小写的方法.(我很乐意在Spring MVC中实现这一点,而不是以某种方式重定向流量)
我有以下型号:
public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用AutoMapper Name将Tag类型的属性映射到我的一个viewmodel中的字符串属性.
我使用以下代码创建了一个自定义解析器来尝试处理此映射:
public class TagToStringResolver : ValueResolver<Tag, string>
{
protected override string ResolveCore(Tag source)
{
return source.Name ?? string.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
我使用以下代码进行映射:
Mapper.CreateMap<Tag, String>()
.ForMember(d => d, o => o.ResolveUsing<TagToStringResolver>());
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我收到错误:
仅对类型上的顶级单个成员支持成员的自定义配置.
我究竟做错了什么?
我的问题是,以最可维护的方式将一个对象映射到另一个对象的最佳方法是什么.我无法改变我们获得的Dto对象设置为更规范化的方式,因此我需要创建一种方法将其映射到我们对象的实现.
以下示例代码显示了我需要发生的事情:
class Program
{
static void Main(string[] args)
{
var dto = new Dto();
dto.Items = new object[] { 1.00m, true, "Three" };
dto.ItemsNames = new[] { "One", "Two", "Three" };
var model = GetModel(dto);
Console.WriteLine("One: {0}", model.One);
Console.WriteLine("Two: {0}", model.Two);
Console.WriteLine("Three: {0}", model.Three);
Console.ReadLine();
}
private static Model GetModel(Dto dto)
{
var result = new Model();
result.One = Convert.ToDecimal(dto.Items[Array.IndexOf(dto.ItemsNames, "One")]);
result.Two = Convert.ToBoolean(dto.Items[Array.IndexOf(dto.ItemsNames, "Two")]);
result.Three = dto.Items[Array.IndexOf(dto.ItemsNames, "Three")].ToString();
return result;
}
}
class Dto
{
public object[] Items …Run Code Online (Sandbox Code Playgroud) mapping ×10
c# ×3
automapper ×2
java ×2
orm ×2
python ×2
.net ×1
annotations ×1
automapper-2 ×1
cherrypy ×1
database ×1
dictionary ×1
edmx ×1
hibernate ×1
jpa ×1
list ×1
spring-mvc ×1
sqlalchemy ×1
timestamp ×1