[英]Entity Framework - defining get without set accessors
我在Visual Studio 2012中创建了一个新的类库项目,以定义数据类,以便首先使用Entity Framework代码创建新的数据库。 因此,我创建了3个类:
下一个产品:
namespace MyClassLibrary
{
public class Product
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
}
}
下一个类别:
using System.Collections.Generic;
namespace MyClassLibrary
{
public class Department
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
}
接下来是ICategoryDataSource:
using System.Linq;
namespace MyClassLibrary
{
public class ICategoryDataSource
{
IQueryable<Product> Products { get; }
IQueryable<Category> Categories { get; }
}
}
在上一类中,我收到下一条错误消息:'MyClassLibrary.ICategoryDataSource.Products.get'必须声明一个主体,因为它没有被标记为abstract或extern。 自动实现的属性必须定义get和set访问器。
我在这里不需要设置器,请告知如何避免使用设置访问器。
通过最后一个代码部分中的名称,我假设您希望ICategoryDataSource
成为接口,而不是类:
using System.Linq;
namespace MyClassLibrary
{
public interface ICategoryDataSource
{
IQueryable<Product> Products { get; }
IQueryable<Category> Categories { get; }
}
}
在具体的类中,永远不可能只有自动属性,而只有一个自动获取器或自动设置器。 您如何将数据放入该属性以便能够将其拉出?
但是,您可以在抽象类或接口中做到这一点,它们都有效地表示“我不在乎数据如何进入这里,我只要求可以将其取出即可。”
您可能需要的是私人二传手。
public IQueryable<Product> Products { get; private set; }
在任何课程中都是完全有效的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.