Entity framework 实体框架数据库第一集合

Entity framework 实体框架数据库第一集合,entity-framework,frameworks,entity,ef-database-first,database-first,Entity Framework,Frameworks,Entity,Ef Database First,Database First,好的,我自己有一个生成的类,名为Vault.CS,它是从我的数据库表“kingdes”生成的。“王国”被分为3个概念模型,分别称为“王国”、“军队”、“保险库”。保险库是一个概念模型,涉及项目SLOT1-ItemSlot16列,其中每个字段都是一个整数 我的问题是如何将这16个字段作为扩展类中的集合引用?例如,如果我要将项目添加到“Vault”中,它会发现第一个字段为空(0或null)插槽1-16中的插槽,然后将响应特定项的整数添加到该字段中。我正在阅读一些复杂类的内容,但没有阅读任何关于能够以

好的,我自己有一个生成的类,名为Vault.CS,它是从我的数据库表“kingdes”生成的。“王国”被分为3个概念模型,分别称为“王国”、“军队”、“保险库”。保险库是一个概念模型,涉及项目SLOT1-ItemSlot16列,其中每个字段都是一个整数


我的问题是如何将这16个字段作为扩展类中的集合引用?例如,如果我要将项目添加到“Vault”中,它会发现第一个字段为空(0或null)插槽1-16中的插槽,然后将响应特定项的整数添加到该字段中。我正在阅读一些复杂类的内容,但没有阅读任何关于能够以这种方式对一组属性进行排序的内容。有什么想法吗?

生成的类应该是部分的。
这意味着您添加了额外的属性和方法,而不涉及生成的类部分。

生成的类应该是部分的。
这意味着您可以添加额外的属性和方法,而不必触及生成的类部分。

我不清楚您的想法,但是我认为您需要这样的东西:

[MetadataType(typeof(VaultAttribs))]
public partial class Vault
{
    public void Add(int item)
    {
        var v = db.Vaults.FirstOrDefault();
        var ps = v.GetType().GetProperties();
        for (int i = 0; i < ps.Lenght; i++)
            if (ps[i].Equals(null))
            {
                ps[i].SetValue(v, item, null);
                db.SaveChanges();
                return;
            }
    }
}

public class VaultAttribs
{        
    // Vault attribs...
}
[MetadataType(typeof(VaultAttribs))]
公共部分类保险库
{
公共无效添加(整数项)
{
var v=db.Vaults.FirstOrDefault();
var ps=v.GetType().GetProperties();
对于(int i=0;i
我不清楚你的想法,但我认为你需要这样的东西:

[MetadataType(typeof(VaultAttribs))]
public partial class Vault
{
    public void Add(int item)
    {
        var v = db.Vaults.FirstOrDefault();
        var ps = v.GetType().GetProperties();
        for (int i = 0; i < ps.Lenght; i++)
            if (ps[i].Equals(null))
            {
                ps[i].SetValue(v, item, null);
                db.SaveChanges();
                return;
            }
    }
}

public class VaultAttribs
{        
    // Vault attribs...
}
[MetadataType(typeof(VaultAttribs))]
公共部分类保险库
{
公共无效添加(整数项)
{
var v=db.Vaults.FirstOrDefault();
var ps=v.GetType().GetProperties();
对于(int i=0;i
事实上,生成的类是一个部分类。我想弄清楚的是如何将类中的属性用作集合。例如,我希望能够向vault中添加一个项目,该项目的标识号将放置在第一个可用的插槽中。例如ItemSlot1=3,ItemSlot2=2,ItemSlot3=11,一个d其余的为空,我可以说是Vault.Add(9);这将确定是否有可用的插槽,然后因为ItemSlot4为空,它会将其分配给该插槽。这有意义吗?我不理解用例号。但是创建一个表示部分类的后半部分的新文件并公开ICollection{get;set;}。很简单。如果不是虚拟EF,则不会尝试使用它生成外键。你不能在分部类中引用poco.field1等。听起来问题已经演变为如何处理16项的集合或数组?也许可以更好地解释这个问题。的确,生成的类是分部类。我试图弄清楚的是如何可以将类中的属性用作集合。例如,我希望能够将一个项目添加到vault中,将该项目的标识号放入第一个可用插槽中。假设ItemSlot1=3、ItemSlot2=2、ItemSlot3=11,其余为空,则可以说vault.add(9);这将确定是否有可用的插槽,然后因为ItemSlot4为null,它将把它分配给该插槽。这有意义吗?我不理解用例号。但是创建一个表示部分类的后半部分并公开ICollection{get;set;}的新文件。很简单。如果不是虚拟EF,则不会尝试使用它生成外键。你不能在部分类中引用poco.field1等。听起来问题已演变为如何处理16项的集合或数组?也许可以更好地解释问题。有代码吗?示例?示例…?!有代码吗?示例?示例…?!好的,很好。非常准确基本上,我的问题是,我在生成的Vault.cs类文件中有16个属性。最初,我试图做的是进行某种类型的收集(我使用dictionary)存储这些属性,以便以后我可以对它们进行迭代。我不熟悉反射,但您的回答实际上一针见血,现在我已经摆脱了最初的集合概念,可以使用反射对属性进行迭代。我几乎逐行修改了这一点,只是持久性包含在父类中。我然而,在我的修补过程中,收集的想法[几乎]起作用了吗?因为我将所有属性放入了一个字典中,并用{1,ItemSlot1}等响应属性初始化了字典。然而,在所有这些之后,我遇到的问题是,我无法直接修改值,也许我做错了(使用=赋值运算符)。现在我知道您必须使用.SetValues()方法。希望这对以后的人有所帮助。好的,太好了。这正是我要找的Amin。基本上,我的问题是,我在生成的Vault.cs类文件中有16个属性。最初我试图做的是进行某种收集(我使用dictionary)存储这些属性,以便以后我可以对它们进行迭代。我不熟悉反射,但您的回答实际上一针见血,现在我已经摆脱了最初的集合概念,可以使用反射对属性进行迭代。我几乎逐行修改了这一点,只是持久性包含在父类中。我然而,在我的修修补补中,收集的想法[几乎]起作用了吗?因为我把所有属性都放到了一个字典中,并用