왜 데이터베이스 집합 기본값을 Entity Framework에서 사용할 수 없습니까? 데이터베이스를 디자인 할 때 적합한 기본값 (예 : "기본값 또는 바인딩"필드)을 추가했습니다. 이제는 StoreGeneratedPattern.Computed
을 사용하지 않으면 나중에 코드를 기본값으로 지정해야하지만 나중에 값을 변경할 수없는 것으로 보입니다. 코드에 기본값을 지정하지 않으면 예외가 발생합니다.왜 데이터베이스 세트 기본값을 사용할 수 없습니까?
0
A
답변
0
여기에 약간의 논리가 있습니다.
엔티티에는 public int ExampleInt {get; 세트; }. Example 열의 기본값을 100으로 설정한다고 가정 해 보겠습니다.
엔티티 객체가 생성되는 상황을 상상해보십시오. 런타임에서 채울 기본값이있는 C# 개체입니다. ExampleInt는 값 0으로 초기화됩니다.이 시점에서 엔티티 개체는 db에 대해 아무것도 모릅니다. 그런 다음 엔티티를 저장하기로 결정했습니다. EF는 행을 작성한 다음 지정한 값을 삽입해야합니다. 하지만 기다려? 이 값을 0 또는 100으로 설정해야합니까? EF는 필드를 변경했는지 추적해야하지만 엔티티 개체를 만든 경우 EF는 첨부 할 때까지는 개체 개체를 인식하지 못합니다.
그냥 아이디어 : 생성자에서 쿼리를 실행하여 기본값을 확인하면 어떨까요? 이것은 객체를 생성하는 순간 디폴트 값으로 채워질 것입니다. 개체가 EF에 의해 만들어진 경우 해당 값은 사용자가 db에있는 값으로 덮어 쓰게됩니다. 사실, 나는 더 좋은 생각을 가지고있다.
왜 새로운 엔티티 객체를 생성하기 위해 factory를 사용하지 않습니까? 팩토리는 db에 기본값을 쿼리 할 수 있습니까? 여전히 좋지는 않지만 constructre에서 쿼리를 실행하는 것이 훨씬 좋습니다. 따라서 :
public class ExampleFactory
{
public static GetExample()
{
// obviously you want to run it only once. This is example only.
int defaultValue = dbContext.Database.SQLQuery("SqlToGetTheDefaultValue");
return new Example { ExampleInt = defaultValue };
}
}
그래서 거기에 가야합니다. 이제 EF가 왜 이것을 할 수 없는지 당신은 알고 있습니다. 그리고 나는 또한 당신에게이 문제를 어떻게 해결할 수 있는지에 대한 아이디어를주었습니다.
관련 문제
- 1. 왜 scipy.io를 사용할 수 없습니까?
- 2. 인수 기본값을 전역 변수로 설정할 수 없습니까?
- 3. 왜 eclipse로 JDT Weaving을 사용할 수 없습니까?
- 4. 왜 Drupal에서 PHP 함수를 사용할 수 없습니까?
- 5. 왜 mod_ruby에서 Rails를 사용할 수 없습니까?
- 6. 왜 회원 초기화 목록을 사용할 수 없습니까?
- 7. 왜 pow() 함수에서 정수를 사용할 수 없습니까?
- 8. 왜 Java 메서드에서 변수를 사용할 수 없습니까?
- 9. 왜 VB.net에서 SendGrid 라이브러리를 사용할 수 없습니까?
- 10. 왜 fstream 벡터를 사용할 수 없습니까?
- 11. mklink - 왜 사용할 수 없습니까? 대상 경로로?
- 12. 스캐너를 왜 다시 사용할 수 없습니까?
- 13. 왜 iPython에서 app.MainLoop()을 사용할 수 없습니까?
- 14. 왜 LPCRITICAL_SECTION 및 CRITICAL_SECTION을 사용할 수 없습니까?
- 15. 왜 ASP.NET에서 LINQ를 사용할 수 없습니까?
- 16. 일부 분류기는 왜 WEKA에서 사용할 수 없습니까?
- 17. 왜 querySelectorAll 결과에 맵을 사용할 수 없습니까?
- 18. 왜 자원 사전에서이 명령을 사용할 수 없습니까?
- 19. 왜 stopwatch.Restart()를 사용할 수 없습니까?
- 20. 왜 아파치의 StringUtils.join을 목록에 사용할 수 없습니까?
- 21. Django : 왜 개발 서버를 사용할 수 없습니까?
- 22. virtualenv를 설치하면 왜 pip를 사용할 수 없습니까?
- 23. 왜 UIButton과 함께 pushViewController를 사용할 수 없습니까?
- 24. 왜 MARS에서 li.s를 사용할 수 없습니까?
- 25. 왜 양식 인라인 클래스를 사용할 수 없습니까?
- 26. 왜 @EJB를 @Named와 함께 사용할 수 없습니까?
- 27. 왜 three20에서 variableHeightRows를 사용할 수 없습니까?
- 28. 왜 함수 어댑터 compose2를 사용할 수 없습니까?
- 29. 왜 jQuery 변수를 사용할 수 없습니까?
- 30. 왜 각도 j를 제쳐두고 사용할 수 없습니까?
그러나 EF 메타 데이터에 기본값이 포함될 수 있으면 데이터베이스가 업데이트 될 때마다 업데이트해야합니다. 나는 한 곳 이상에서 상수 값을 갖는 것을 좋아하지 않는다. * 한숨 * – Jordan
나는 동의한다, 좋을 수 있었다. http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions –
"StoreGeneratedPattern.Computed가있는 속성은 응용 프로그램에서 설정할 수 있지만 값은 사용되지 않습니다. 유일한 예외는 다음과 같습니다. 속성은 ConcurrencyMode.Fixed를 사용합니다. 이러한 속성은 컨텍스트에서 엔터티가 추적되지 않을 때만 사용되지만 Entity Framework에서 낙관적 인 동시 처리에서 큰 문제가되므로 다른 블로그 게시물에서이 문제를 자세히 설명합니다. " http://www.ladislavmrnka.com/2011/03/the-bug-in-storegeneratedpattern-fixed-in-vs-2010-sp1/ –