根据属性值从现有实体创建实体

时间:2013-09-09 09:33:44

标签: c# entity-framework ef-database-first

我有一个使用Database First生成的相当通用的Item实体的示例,Visual Studio 2012和Entity Framework 5中的ADO.Net Entity Data Model使用生成的模板创建.edmx文件我的课程。

我试图找出是否有可能在不进行数据库更改的情况下生成新实体,因此我有一个基于ItemType的新实体。 我知道我可以使用Linq to Entities执行此操作,但我很想知道在模型Context中是否可行。

举个例子: 数据库中的ItemType的值可能为{1, "Fabric"},我想基于FabricItem类创建一个名为Item的新实体..正如您所看到的那样ColourIdRangeId可以为Item的某些子类,我希望不使用这些属性,即某些属性是可选的。

在创建这些新实体时是否也可以删除/禁用某些属性,例如根本不允许ColourId

public partial class Item
{
    public Item()
    {
        this.ItemToItems = new HashSet<ItemToItem>();
    }

    public string Id { get; set; }
    public string Name { get; set; }
    public Nullable<int> ColourId { get; set; }
    public int ItemTypeId { get; set; }
    public Nullable<int> RangeId { get; set; }
    public bool Active { get; set; }

    public virtual Range Range { get; set; }
    public virtual Colour Colour { get; set; }
    public virtual ItemType ItemType { get; set; }

    public virtual ICollection<ItemToItem> ItemToItems { get; set; }
    public virtual ICollection<ItemToItem> ItemToItems1 { get; set; }
    public virtual ICollection<ItemImage> ItemImages { get; set; }
}

public partial class ItemToItem
{
    public int Id { get; set; }
    public string ItemId { get; set; }
    public string RelatedItemId { get; set; }

    public virtual Item Item { get; set; }
    public virtual Item Item1 { get; set; }
}

public partial class Range
{
    public Range()
    {
        this.Items= new HashSet<Item>();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public bool Active { get; set; }

    public virtual ICollection<Item> Items { get; set; }
}

public partial class ItemType
{
    public ItemType()
    {
        this.Items = new HashSet<Item>();
    }

    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Item> Items { get; set; }
}

public partial class Colour
{
    public Colour()
    {
        this.Items = new HashSet<Item>();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public string Hex { get; set; }

    public virtual ICollection<Item> Items { get; set; }
}

public partial class ItemImage
{
    public int Id { get; set; }
    public string ItemId { get; set; }
    public int ImageTypeId { get; set; }
    public string ImageUrl { get; set; }

    public virtual ImageType ImageType { get; set; }
    public virtual Item Item { get; set; }
}

public partial class ImageType
{
    public ImageType()
    {
        this.ItemImages = new HashSet<ItemImage>();
    }

    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<ItemImage> ItemImages { get; set; }
}

0 个答案:

没有答案