ОБНОВЛЕНО КОДОМ!Объектно-ориентированные модели базы данных
Я разрабатываю веб-приложение с использованием ASP.NET MVC 3, и я хочу создать объектно-ориентированный список, используя «ADO.NET Entity Data Model».
Я создал модели по структуре сущности «Code-First», используя «ADO.NET Entity Data Model», а затем создал базу данных. После этого я создал целый DAL, используя «Reverse инженер Code First» из базы данных, содержащей мои классы плюс объект DataContext.
У меня есть простой тип, называемый «Item», содержащий свойство «Name». Кроме того, существуют некоторые производные типы, такие как «Оружие» и «Броня», содержащие эксклюзивные свойства, такие как «Урон» и «Защита» соответственно.
Как обычный объектно-ориентированный способ, Я хочу перебирать элементы, которые могут видеть эксклюзивные свойства каждого типа.
Это моя цель, будучи в состоянии перебрать все элементы игрока, включая их свойства, даже если они получены из пункта:
// Creating a game context that derives from DbContext
GameContext context = new GameContext();
// Take my profile
Player me = context.Players.First();
// Get my items and show them, show both
var myItems = me.Items;
// Printing all the items that I have with the properties of the derrived objects as well
// ("Weapon" and "Armour" objects as well (They derive from "Item" object)
foreach (var item in myItems)
{
// Accessing the item's name. every item has this property, so there is nothing special.
Console.WriteLine("Name:" + item.ItemName);
if (item.Type == "Weapon")
{
// Accessing the item's damage, which is uniqe to a weapon (that derrives from "Item" object).
Console.WriteLine("Damage:" + (Weapon)item.ItemDamage);
}
if (item.Type == "Armour")
{
// Accessing the item's defense, which is uniqe to an armour (that derrives from "Item" object).
Console.WriteLine("Defense:" + (Armour)item.ItemDefense);
}
}
Теперь дальше это то, что у меня есть и Меня не устраивает, хотя я считаю, что это не нужно.
Мои текущие модели отношений (что я не доволен):
Пункт базового класса, которые содержат различные элементы, отметим, что использование «Item» объекта так же, как использование абстрактного класс - он будет использоваться только его производными классами - «Оружие», «Броня», «Ювелирные изделия» и т. д.
Оружие, содержащее свойство навигации соответствующего элемента, а также его собственные свойства (Ущерб в этом случае).
ConcrateItem - это предмет, который имеет игрок. это означает, что он содержит свойство навигации (которое используется так же, как указатель), к этому элементу, а также количество обновлений, которые этот экземпляр элемента был обновлен, поскольку он является индивидуальным для каждого элемента и не используется для всех элементов такого типа.
Что я сделал вначале, так это привязать оружие и типы брони к соответствующему элементу , поэтому я могу получить доступ к свойствам базового элемента, если я перебираю таблицу оружия или над таблицей брони, но проблема заключается в том, что Я хочу перебирать все элементы сразу и с этой точки, чтобы иметь возможность получить эксклюзивные свойства, а не перебирать каждую таблицу, содержащую определенный класс, полученный из элемента.
Кто-нибудь знает, как я могу это достичь?
Неясно, какие элементы вы хотите перебрать ... Делитесь проект кодекса. –
Я добавил код, который я хочу использовать вместе с несколькими пояснениями. Благодарю. –