Pergunta

Finalmente, estou consumindo o lançamento mais recente da EF e estou tendo alguns problemas com meus testes.

Portanto, minha camada dal segura meu arquivo .edmx e eu estou usando o modelo MS POCO, para que eu também tenha os arquivos e classes .tt gerados.

Eu tenho uma classe base genérica no testProject.dal que eu criei que essas classes derivam. Ou seja

public class BaseEntity<T> {}
public class Customer : BaseEntity<Customer> {}
public class Product : BaseEntity<Product> {}

Então, na minha camada testProject.bll, tenho algumas classes derivadas, ou seja,

public class TestProject.BLL.Customer : TestProject.DAL.Customer {}
public class TestProject.BLL.Product : TestProject.DAL.Product {}

Então, na minha camada da interface do usuário, estou chamando meu objeto Bll.Customer. Recebo um erro dizendo que a referência ao objeto Dal.Customer não é adicionado, etc.

Tenho uma referência ao projeto BLL do meu projeto de interface do usuário e uma referência ao DAL do meu projeto BLL.

Por que a camada da interface do usuário está reclamando que conhece a camada DAL quando não é referenciada nesse projeto?

Além disso, como uma pergunta lateral, isso parece um design "bom"?

Obrigado a todos! Gaosey

Foi útil?

Solução

Craig está correto - sua interface do usuário está referenciando os tipos de entidade POCO. Mas vou elaborar um pouco mais.

Se Você estava em uma situação em que seu projeto de interface do usuário estava referenciando a assembléia do BLL e essa montagem estava referenciando o conjunto do DAL e não expondo publicamente qualquer membro dessa Assembléia DAL, então o que você está dizendo estaria correto. Mas não é isso que está acontecendo aqui. Você está referenciando a montagem do BLL e os tipos nessa montagem diretamente herdando dos tipos de DAL e, portanto, os tipos de dal são publicamente visível para sua interface do usuário. Portanto, o compilador está (corretamente) dizendo que você deve fazer referência à montagem DAL do seu projeto de interface do usuário.

Quanto à sua pergunta de "bom design", isso sempre depende do contexto. Sem conhecer nenhum de seu contexto, eu hesitaria em criar uma árvore de herança como essa. Qual é o trabalho de suas subclasses na montagem do BLL?

Outras dicas

Sua interface do usuário faz Referenciar os tipos de entidade poco - através do parâmetro genérico do tipo BaseEntity.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top