2013-08-06 82 views
2

我有一个程序逻辑问题..asp.net详细模型逻辑

好吧,让我们开始吧。

我在模型中有2个类。

namespace Korbball.Models 
{ 
public class Clubs 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public string state { get; set; } 
    public string description { get; set; } 
} 

public class ClubDetails : Clubs 
{ 
    public string website { get; set; } 
    public string banner { get; set; } 
} 

}

在第一步骤中,我会调用所有俱乐部的概述与俱乐部类的条目。 如果我点击一个俱乐部,有一个链接 - >网站/俱乐部/详细信息/编号

现在,我将在此视图上显示来自俱乐部和ClubDetails的所有数据。

该数据存储在数据库中。

private static List<Clubs> clubs = new List<Clubs>(); 
    KorbballEntities db = new KorbballEntities(); 

    public KorbballRepository() 
    { 
     var clubsdata = db.Korbball_Clubs.ToArray(); 
     foreach (var c in clubsdata) 
     { 
      clubs.Add(new Clubs { id = c.ClubId, name = c.Name, state = c.State }); 
     } 
    } 

因此,我只获得有关俱乐部信息的数据。 有关详细信息,我是否应该生成一个包含所有信息的新列表?

希望任何人知道我的意思......不能宣布它要好得多..

的感谢!

更新: 好吧,我觉得问题是,我无法找到谁可以教我的MVC逻辑= d

我有很多的俱乐部。这家具乐部已经基本信息(姓名,身份证,州)

这家具乐部也有详细的信息像描述,横幅,网站等

我做了一个ModelClass

ClubModel.cs

public class Clubs 
{ 
public int id { get; set; } 
public string name { get; set; } 
public string state { get; set; } 
public string description { get; set; } 
} 

public class ClubDetails : Clubs 
{ 
public string website { get; set; } 
public string banner { get; set; } 
} 

我会显示所有俱乐部的基本信息与网站/俱乐部列表

如果我去详细视图,俱乐部/详细信息/ ID我会sh ow所有信息(基本+详细)

您的解决方案似乎很酷。我无法在互联网上找到任何有关如何在这种情况下建立“最佳实践”方法的想法。

+0

使用'ClubDetails'无处不在你通常用'Clubs'因为前者在后者上继承,而后者不知道前者的额外属性。 –

回答

0

Club与Details之间的关系是一对一吗?这听起来像是基于你如何描述所有内容,但它没有多少意义,因为就像有人提到你是从俱乐部继承的,所以你只需加载Club_Details,你就会自动获得俱乐部专栏。

如果您的关系是一对多的最简单的方法是将协会关联到您的模型(数据库上的外键关系),然后使用“包含”来告知实体框架您想要关联的实体。我把它放在一起很快,所以语法可能不完美,基本思路是查看“包含”。

这个逻辑是有缺陷的,因为它加载了许多俱乐部,然后加载俱乐部的细节,你想解决这个问题。

private static List<Clubs> clubs = new List<Clubs>(); 
private List<Club_Details> clubDetails = new List<Club_Details>(); 
// make a view model class that contains club and club details (one to many) 
private ClubData clubdata = new ClubData(); 

public KorbballRepository() 
{ 
    var clubsdata = db.Clubs.Include("Club_Details").ToArray(); 
    foreach (var c in clubsdata) 
    { 
     clubs.Add(new Clubs { id = c.ClubId, name = c.Name, state = c.State }); 

     /* sample of how to reference the Included entities use the association name 
      of Club_Details if it were a one to many relationship, ideally you 
      would create a view model or something with the two classes defined 
      and one club and list of club details, then define a list of the view 
      model for all Clubs */ 

     clubDetails = new List<Club_Details>(); 

     foreach (var d in c.Club_Details) 
     { 
       clubDetails.Add(new Club_Details { 
        website = d.website.ToString(), 
        banner = d.banner.ToString() 
       });; 
      } 

    /* load the data to the view model class and loop again */ 
    } 

} 
+0

哇,谢谢你的快速回答... 我会尽力解决它。也许你可以在我这样做后看看它。 问候 –

+0

不客气。我发现了一个更清晰的一对多关系示例,以及在这里使用“Include”的概念:http://blog.stevensanderson.com/2011/01/28/mvcscaffolding-one-to-many-relationships/HTH –