了解公共财产清单 - C#MVC最佳实践

时间:2014-02-20 12:51:56

标签: c# asp.net-mvc model-view-controller

我正在尝试找出最佳编码实践和性能优化。我正在学习C#MVC并创建一个图片项目来展示我正在学习的东西。这是问题所在。

我目前有

public long PictureID { get; set; }
    public int UserID { get; set; }
    public string File { get; set; }
    public string Category { get; set; }
    public string Breed { get; set; }
    public DateTime Posted { get; set; }

但我认为分类和品种应该是一个列表但是我不确定在哪里正确实现它。

public long PictureID { get; set; }
    public int UserID { get; set; }
    public string File { get; set; }
    public List<Category> Animal { get; set; }
    public List<BreedType> Breed { get; set; }
    public DateTime Posted { get; set; }

该类别将保持静态,因为值为Dog Cat Bird Horse等,但品种会根据所选类别而变化

我是否列出了班级或单独班级中的类别和品种选项? 另一方面,我应该为每个类别品种创建一个表格,比如DogBreeds CatBreeds等吗?

感谢任何可以提供帮助的人。

2 个答案:

答案 0 :(得分:1)

你可以有这样的结构: 一对多关系。分类和品种

class Pic
{ 
public Pic()
{
Categories = new List();
}

    public long PictureID { get; set; }
    public int UserID { get; set; }
    public string File { get; set; }
    public ICollection<Category> Categories{ get; set; }
    public DateTime Posted { get; set; }
}

为类别制作类并在那里实施品种。

class Category
{
public Category()
{
Breeds = new List();
}
public ICollection<Breed> Breeds {get;set;}
}

通过这种方式,您可以实现您的关系.. 我希望这会有所帮助..

答案 1 :(得分:0)

我会以这种方式组织表格

Category
- Id
- Name

Breed
- Id
- Name
- CategoryId

Stuff
- PictureId
- UserId
- File
- BreedId
- Posted

这样的模型,为什么你想要一个类别或品种列表?

public class Category
{
    public int Id {get;set;}
    public int Name {get;set;}

    public virtual ICollection<Breed> Breeds {get;set;}
}

public class Breed
{
    public int Id {get;set;}
    public int Name {get;set;}
    public int CategoryId {get;set;}

    public virtual Category Category {get;set;}
}


public class Stuff
{
    public int PictureId {get;set;}
    public int UserId {get;set;}
    public string File {get;set;}
    public int BreedId {get;set;}
    public DateTime Posted {get;set;}

    public virtual Breed Breed {get;set;}
}

如果我想要品种的类别我可以做类似的事情

stuff.Breed.Category.Name

如果这非常详细,请创建一个ViewModel,其中包含重要的属性并在...之前执行单个查询。