我有一个 MVC 解决方案:
在我的不同文件中:
库.DataAccessLayer.LibraryContext.cs :
namespace Library.DataAccessLayer
{
public class LibraryContext : DbContext
{
public LibraryContext() : base("DefaultConnection")
{
}
public DbSet<Book> Books { get; set; }
public DbSet<Author> Authors { get; set; }
}
}
库.DataAccessLayer.Models.Author.cs :
namespace Library.DataAccessLayer.Models
{
public class Author
{
[Key]
public int AuthorID { get; set; }
[Required]
[StringLength(50)]
[Display(Name = "First Name")]
public string FirstName { get; set; }
.........
}
}
库.DataAccessLayer.Repositories.AuthorRepository.cs :
namespace Library.DataAccessLayer.Repositories
{
public class AuthorRepository : IDisposable, IAuthorRepository
{
private LibraryContext context;
public AuthorRepository(LibraryContext context)
{
this.context = context;
}
public IEnumerable<Author> GetAuthors()
{
return context.Authors.ToList();
}
public Author GetAuthorById(int id)
{
return .........
}
............
}
}
在 Library.Controllers.AuthorController 中:
namespace Library.Controllers
{
public class AuthorController : Controller
{
private IAuthorRepository authorRepository;
public AuthorController()
{
this.authorRepository = new AuthorRepository(new LibraryContext());
}
public ActionResult Index()
{
var authors = authorRepository.GetAuthors();
return View(authors);
}
}
}
1/这个架构是连贯的?
2/为在我的存储库类中实现的存储库声明接口(interface)真的有用吗?
3/在我的AuthorRepository中,LibraryContext的声明和调用是否正确?
4/在我的 AuthorController 中,我对 AuthorRepository 的声明和调用是正确的吗?
5/我们可以将文件 LibraryContext 放在哪个文件夹中? (如果有必要和有用的话)
6/将存储库接口(interface)和存储库类分组在同一个文件夹中好吗?如果没有,各个文件夹如何区分和命名?
7/如何改进?
我需要你的建议。
谢谢
最佳答案
- 我发现架构很简单,这很好,也许随着您的应用程序的增长,您将需要更多层
- 是的,非常好,特别是如果您要使用依赖注入(inject),这会导致下一个问题。
- 您的实现是正确的,至于依赖关系,您应该使用一些设计模式,例如依赖注入(inject)或工厂。您的所有依赖项都应在外部实例化。
- 这个应该和上一个一样,repository应该在外面实例化。
- 该结构应该可以满足您的需求,但我在 here 中找到了示例很有用
- 许多开发人员都是这样做的,有些人也是这样做的,还有一些人,比如我,将它们保存在单独的文件中,我个人在我的存储库旁边创建了一个“契约(Contract)”文件夹,并将接口(interface)保存在那里。
- 找到适合您的约定的最佳方法是阅读其他开发人员的代码,您会在其中找到许多样式、结构、架构和模式实现。
我希望你觉得这有用,愿原力与你同在
关于c# - DataAccessLayer 和组织解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40963740/