0

我不确定如何准确地表达我的问题,这可能就是为什么我在任何地方都找不到这样的例子。我正在使用 MVC4 和 EF5(也是 Web API),但我不确定如何继续使用模型,因为我以前从未真正需要对它们做太多事情。我正在围绕元素周期表做一些事情,我想制作它,以便为具有电子配置的元素建立一个列表。但是,我希望它只是根据输入顺序自动编号。如何告诉 EF 自动增加字段?基本上就像一个没有限制的主键字段。到目前为止,这是我所拥有的-我只是不确定如何进行:

public class Elements
{
    public int ElementID { get; set; }
    public string Name { get; set; }
    public int AtomicNumber { get; set; }
    public string Symbol { get; set; }
    public virtual Categories Category { get; set; }
    public virtual States State { get; set; }
    public virtual Occurences Occurence { get; set; }
    public virtual ICollection<Configurations> Configuration { get; set; }
}

public class Categories 
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
}

public class States
{
    public int StateID { get; set; }
    public string StateName { get; set; }
}

public class Occurences
{
    public int OccurenceID { get; set; }
    public string OccurenceName { get; set; }
}

public class Configurations
{
    public int ConfigurationID { get; set; }
    public int Order { get; set; }
    public int Value { get; set; }
}

看上面我想要的是任何时候将值添加到 Configurations.Order 值从 1 开始并随着每个新的“行”而增加,但仅限于该特定的 ElementID。

那有意义吗?我正在考虑使用数据注释,但除了关键字段之外,我找不到任何匹配的东西,但这会使每个订单成为唯一的数字——我不想要。我觉得我没有正确表达这一点,因为我一直在寻找所有的东西来弄清楚,所以这是一张图片!耶!

在此处输入图像描述

从程序化的角度来看,这很可能是更好的事情。即使这个数据在一个蓝色的月亮上改变一次,我想尽可能地尝试通过 EF 来做,这样我就知道怎么做了。

提前致谢。此外,如果您发现任何其他明显的错误,请务必告诉我 :) 我很少与 web 开发人员一起工作,所以我确信有办法做得更好。

4

1 回答 1

0

如何告诉 EF 自动增加字段?

你不能。甚至对于简单的自动递增主键也不行。更不用说应该相对于其他值增加的字段了。

HasDatabaseGeneratedOption映射方法不是告诉 EF 如何生成键值的方法。它告诉 EF 数据库是否以及如何生成属性值,因此 EF 知道如何响应。

因此,您要么必须在代码中生成订单号,要么让数据库来完成(通过触发器,或通过将 CUD 操作映射Configurations到存储过程)并告诉 EF 数据库通过属性HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed)配置来计算值Order

于 2012-11-28T22:05:32.317 回答