나는 edml의 빈 디자이너에 테이블을 끌어서 데이터 기반 모델을 만들었다. 내 모델 주위에 datacontext를 만들 수 있으며, 클래스 인 것처럼 각 테이블에 액세스 할 수 있지만 이러한 모델 각각에 대한 코드는 어디에 있습니까?EDML에서 생성 한 모델의 코드는 어디에 있습니까?
클래스 자체의 각 속성에 대한 설정자에 유효성 검사를 추가하고 싶습니다.
나는 edml의 빈 디자이너에 테이블을 끌어서 데이터 기반 모델을 만들었다. 내 모델 주위에 datacontext를 만들 수 있으며, 클래스 인 것처럼 각 테이블에 액세스 할 수 있지만 이러한 모델 각각에 대한 코드는 어디에 있습니까?EDML에서 생성 한 모델의 코드는 어디에 있습니까?
클래스 자체의 각 속성에 대한 설정자에 유효성 검사를 추가하고 싶습니다.
프로젝트의 루트 수준에서 .dbml
파일을 찾으십시오. 이 파일 아래에 <someDB>.designer.cs
이라는 파일이 표시됩니다.
그러나 디자이너 파일의 맨 위에이 파일이 표시되므로이 파일의 클래스를 실제로 변경하고 싶지는 않습니다. 당신이 추가를 확인하려면
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
, 당신은 생성 된 클래스의 기능을 확장 Partial
클래스를 만들기로 보일 것입니다.
namespace ETL_Framework_UI
{
[MetadataType(typeof(DataObjectMD))]
public partial class DATA_OBJECT:IValidatableObject
{
public class DataObjectMD
{
[Required(ErrorMessage="The object name is required")]
[StringLength(50, ErrorMessage = "Name cannot exceed 50 characters")]
public string OBJECT_NAME { get; set; }
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
ETLDbDataContext db = new ETLDbDataContext();
var field = new[] { "OBJECT_NAME" };
var param = db.DATA_OBJECTs.SingleOrDefault(r => r.OBJECT_NAME == OBJECT_NAME && r.OBJECT_ID != OBJECT_ID);
if (param != null)
{
yield return new ValidationResult("Object name is already in use. ", field);
}
참고 귀하의 부분 클래스는 당신이 당신의 designer.cs
파일의 상단에 볼 같은 네임 스페이스에 정의해야합니다 여기
자동 생성 클래스 자체는 수정하고 싶지 않습니다. 다시 생성해야하는 경우 큰 문제가 발생할 수 있습니다. 대신 DataAnnotations에 부분 클래스를 사용하려고합니다. 이렇게하면 유효성 검사/추가 규칙이 영원히 분리되고 유지 관리가 더 쉬워집니다. 유효성 검사를 추가하려는 경우
감사합니다. Idon't는 그런 물건이 존재 한다라는 것을 알고있다, 그리고, 나는 지금 어떤 코드 Rondel (위의)이 그의 예에서 이야기하고 있었는지에 관해 안다. –
어쩌면 엔티티 프레임 워크 코드 첫 번째는 더 나은 솔루션입니다.
이유를 설명해 주시겠습니까? 필자는 항상 linq에서 SQL로 엔티티를 선택해야하는 이유를 항상 궁금해했습니다. ltos는 SQL Server 환경에서 더 좋습니다. –
나는 이유에 대해서도 알고 싶어합니다. 나는 EF처럼 L2S와 잘 작동하지 않는 자주 사용되는 검증 시스템에 대해서는 잘 모르고 있습니다. –
부분 클래스는 필요하지 않습니다. 당신은 한 곳에서 모든 것을 가지고 있습니다. EF 코드의 장점에 대해 자세히 알아보기 http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx –
부분 클래스를 사용한 적이 처음입니다. 거기에 몇 가지 코드가 있습니다. 본 적이 없습니다. –
멋진 멋진 것들이 많이 있습니다. 오른쪽에있는 PluralSight 비디오 (http://www.asp.net/mvc)를 확인하십시오. 유효성 검사 및 기타 MVC 개념에 대한 훌륭한 자습서가 있습니다. – Rondel
링크를 제공해 주셔서 감사합니다. 처음으로 "yield"가 사용 된 것을 처음 보았습니다. 무슨 뜻이에요!? –