0

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

我试图找出是否可以在不更改数据库的情况下生成新实体,以便我有一个基于ItemType. 我知道我可以使用 Linq to Entities 来做到这一点,但我很想知道这在模型上下文中是否可行。

举个例子:ItemType数据库中的一个可能有一个值,{1, "Fabric"}我想创建一个FabricItem基于Item类的新实体。你可以看到ColourIdRangeId是可以为空的,因为Item我希望不使用这些属性的一些子类即有些是可选的。

在创建这些新实体时是否也可以删除/禁用某些属性,例如根本不允许 a 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; }
}
4

0 回答 0