یا اینکه میشود در حین آپلود توسط افزونه هم یک سری توضیحات اضافی رو ارسال کرد:
// JS up.settings.multipart_params = { description: $("#imageDescription").val() }; // C# string description = context.Request.Form["description"];
// JS up.settings.multipart_params = { description: $("#imageDescription").val() }; // C# string description = context.Request.Form["description"];
[Column(TypeName = "xml")] public string XmlValue { get; set; } [NotMapped] public XElement XmlValueWrapper { get { return XElement.Parse(XmlValue); } set { XmlValue = value.ToString(); } }
روش عمومی کار با نوعهای خاصی که در EF تعریف نشدن، استفاده از ویژگی Column و مشخص کردن Type آن است؛ مانند مثالی که در بالا ملاحظه میکنید. البته این نوع خاص، در سمت کدها باید به صورت رشته تعریف شود. مثلا از سال 2005 به این طرف فیلد XML به SQL Server اضافه شده. اما نمیشود ازش در EF به همون شکل XML استفاده کرد. باید تبدیلش کنی به String تا قابل استفاده بشه. یک نمونه دیگرش نوع خاص Spatial هست که در نگارشهای اخیر SQL Server اضافه شده (geography و geometry). این مورد فقط از EF 5.0 به بعد پشتیبانی توکاری ازش ارائه شده. یا برای hierarchyID در EF معادلی وجود نداره. برای تعریف این مورد نیز در یک مدل باید از string استفاده کرد.
بعد اگر این نوع خاص (که الان به صورت رشته دریافت شده) قابل نگاشت به نوعی مشخص در سمت کدهای برنامه بود (یعنی صرفا یک رشته ساده نبود) مثلا میشود از ویژگی NotMapped برای تبدیل آن و تعریف آن به شکل یک فیلد محاسباتی استفاده کرد.
public class CustomContext : DbContext { public CustomContext() : base("AppConfigConnectionStringName") { } // or public class CustomContext : DbContext { public CustomContext() : base(@"Data Source=(local);Initial Catalog=MyDBName;Integrated Security=True;Pooling=False") { }
var ctx = new MyContext(); ctx.Database.Connection.ConnectionString = "...";
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(local);Initial Catalog=MyDBName;Integrated Security=True;Pooling=False");