2010-08-12 65 views
2

我一直在研究由Steven Sanderson编写的Pro ASP.NET MVC 2框架。到目前为止,这已经是现象了...当我认为我知道了一个相当大的数量时,我发现一本书向我展示了我知道得有多少。如何在LINQ中手动设置外键关系到SQL

我很少了解的一件事是如何使用LINQtoSQL。在史蒂文的书中,第4-6章创建了一个非常漂亮的小购物车。我经历了教程,并使所有的工作。现在,我想修改购物车以使用类别表格,而不是将类别名称作为varchar存储在Product表格中。

下面是产品表对象,其中我的更改将CategoryID作为类别表的外键关系。

[Table(Name="Products")] 
    public class Product 
    { 
     [HiddenInput(DisplayValue=false)] 
     [Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)] 
     public int ProductID { get; set; } 

     [Required(ErrorMessage="Please enter a product name")] 
     [Column] public string Name { get; set; } 

     [Required(ErrorMessage="Please enter a description")] 
     [DataType(DataType.MultilineText)] 
     [Column] public string Description { get; set; } 

     [Required] 
     [Range(0.01, double.MaxValue, ErrorMessage="Please enter a positive price")] 
     [Column] public decimal Price { get; set; } 


     [Required(ErrorMessage="Please enter a category")] 
     [Column] public int CategoryID { get; set; } 

     internal EntityRef<Category> _category; 
     [System.Data.Linq.Mapping.Association(ThisKey = "CategoryID", Storage = "_category")] 
     public Category Category { 
      get { return _category.Entity; } 
      internal set { _category.Entity = value; CategoryID = value.CategoryID; } 
     } 


     [Column] public byte[] ImageData { get; set; } 

     [ScaffoldColumn(false)] 
     [Column] public string ImageMimeType { get; set; } 

这里是我的Category类

[Table(Name="Categories")] 
    class Category 
    { 
     [Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)] 
     internal int CategoryID { get; set; } 

     [Column] 
     public int ParentCategoryID { get; set; } 

     [Column] 
     [Required] 
     public string Name { get; set; } 
    } 

当我试图建立这个代码,我得到了我不明白的错误:

可访问性不一致:属性类型'SportsStore.Domain.Entities.Category' 比属性'SportsStore.Domain.Entities.Product.Category'更难以访问'

这是什么意思/我该如何解决这个问题?

回答

1

您的班级“Categroy”与“Product”相比较不明显。 “产品”有一个公开的属性“类别”。这是“不一致的可访问性”。

你必须声明你的类“Category”public like“Product”

+0

doh!有时我希望我可以回答一个问题。谢谢您的帮助。 – quakkels 2010-08-12 21:07:57