Здравствуйте, Artem Korneev, Вы писали:
AK>Есть у меня хранимые процедуры в SQL-базе и мэппинг на EntityFramework для вызова тех хранимых процедур.
AK>Т.к. это SQL, там бывают довольно длинные списки параметров. Вот, например:
...
AK>Все или почти все параметры — одного типа (string). Если вызывать процедуру без указания имён параметров, то там запросто можно дико накосячить.
AK>Можно ли как-то средствами C# запретить вызов метода без указания имён параметров? Т.е. чтоб вот такая инструкция сразу давала ошибку компилляции:
AK>?
Делайте по старинке
public class SearchStudiesParams {
public string patientID;
public string facilityMRN;
public string firstName;
public string lastName;
public string patientName;
public string firstAndLastName;
public string middleName;
public string patientPrefix;
public string patientSuffix;
public string gender;
public string modality;
public string aetitle;
public string studyId;
public string description;
public string accession;
public string refPhysician;
public string studyDateFrom;
public string studyDateTo;
public string perPhysician;
public virtual bool valid() {
return
patientID != null &&
facilityMRN != null &&
firstName != null &&
lastName != null &&
patientName != null &&
firstAndLastName != null &&
middleName != null &&
patientPrefix != null &&
patientSuffix != null &&
gender != null &&
modality != null &&
aetitle != null &&
studyId != null &&
description != null &&
accession != null &&
refPhysician != null &&
studyDateFrom != null &&
studyDateTo != null &&
perPhysician != null;
}
}
...
var studies = ctx.usp_SearchStudies(new SearchStudiesParams() {
patientID = patientId,
facilityMRN = facilityMrn,
firstName = firstName,
lastName = lastName,
patientName = patientName,
firstAndLastName = firstAndLastName,
middleName = middleName,
patientPrefix = patientPrefix,
patientSuffix = patientSuffix,
gender = gender,
modality = modality,
aetitle = aetitle,
studyId = studyId,
description = description,
accession = accession,
refPhysician = refPhysician,
studyDateFrom = studyDateFrom,
studyDateTo = studyDateTo,
perPhysician = perPhysician
});