سلام آقای مهندس
شما برای نمایش PDF در سایت چه روشی رو پیشنهاد میدید؟ نمایش در مرورگر ، دانلود فایل و...
شما برای نمایش PDF در سایت چه روشی رو پیشنهاد میدید؟ نمایش در مرورگر ، دانلود فایل و...
[HttpPost("two-files")] public async Task Upload(IFormFile file1, IFormFile file2) { // validate the files, scan virus, save them to a file storage }
و یا حالت پیچیدهتر آن
/// <summary> /// Submit a form which contains a key-value pair and a file. /// </summary> /// <param name="id">Student ID</param> /// <param name="form">A form which contains the FormId and a file</param> /// <returns></returns> [HttpPost("{id:int}/forms")] [ProducesResponseType(typeof(FormSubmissionResult), StatusCodes.Status201Created)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task<ActionResult<FormSubmissionResult>> SubmitForm(int id, [FromForm] StudentForm form) { // ... } public class StudentForm { [Required] public int FormId { get; set; } [Required] public IFormFile StudentFile { get; set; } }
private readonly IEnumerable<IMultiple> _services; public HomeController (IEnumerable<IMultiple> services) { _services = services; }
var serviceA = services.First(o => o.GetType() == typeof(ImplementationOne));
var serviceB = services.First(o => o.Name.Equals("MyClassName"));
public enum CommentType { Article, Video, Event } public class Comment { public int Id { get; set; } public string CommentText { get; set; } public string User { get; set; } public int? TypeId { get; set; } public CommentType CommentType { get; set; } } public class Article { public int Id { get; set; } public string Title { get; set; } public string Slug { get; set; } public string Description { get; set; } } public class Video { public int Id { get; set; } public string Url { get; set; } public string Description { get; set; } } public class Event { public int Id { get; set; } public string Name { get; set; } public DateTimeOffset? Start { get; set; } public DateTimeOffset? End { get; set; } } public class MyDbContext : DbContext { public DbSet<Article> Articles { get; set; } public DbSet<Video> Videos { get; set; } public DbSet<Event> Events { get; set; } public DbSet<Comment> Comments { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlite("Data Source=polymorphic.db"); }
var articleComments = dbContext.Comments .Where(x => x.CommentType == CommentType.Article && x.TypeId.Value == 1); foreach (var articleComment in articleComments) { Console.WriteLine(articleComment.CommentText); }
public class Comment { public int Id { get; set; } public string CommentText { get; set; } public string User { get; set; } public virtual ICollection<ArticleComment> ArticleComments { get; set; } public virtual ICollection<VideoComment> VideoComments { get; set; } public virtual ICollection<EventComment> EventComments { get; set; } } public class Article { public Article() { ArticleComments = new HashSet<ArticleComment>(); } public int Id { get; set; } public string Title { get; set; } public string Slug { get; set; } public string Description { get; set; } public virtual ICollection<ArticleComment> ArticleComments { get; set; } } public class Video { public Video() { VideoComments = new HashSet<VideoComment>(); } public int Id { get; set; } public string Url { get; set; } public string Description { get; set; } public virtual ICollection<VideoComment> VideoComments { get; set; } } public class Event { public Event() { EventComments = new HashSet<EventComment>(); } public int Id { get; set; } public string Name { get; set; } public DateTimeOffset? Start { get; set; } public DateTimeOffset? End { get; set; } public virtual ICollection<EventComment> EventComments { get; set; } } public class MyDbContext : DbContext { public DbSet<Article> Articles { get; set; } public DbSet<ArticleComment> ArticleComments { get; set; } public DbSet<Video> Videos { get; set; } public DbSet<VideoComment> VideoComments { get; set; } public DbSet<Event> Events { get; set; } public DbSet<EventComment> EventComments { get; set; } public DbSet<Comment> Comments { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlite("Data Source=polymorphic.db"); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<ArticleComment>(entity => { entity.HasKey(e => new { e.CommentId, e.ArticleId }) .HasName("PK_dbo.ArticleComments"); entity.HasIndex(e => e.ArticleId) .HasName("IX_ArticleId"); entity.HasIndex(e => e.CommentId) .HasName("IX_ArticleCommentId"); entity.HasOne(d => d.Article) .WithMany(p => p.ArticleComments) .HasForeignKey(d => d.ArticleId) .HasConstraintName("FK_dbo.ArticleComments_dbo.Articles_ArticleId"); entity.HasOne(d => d.Comment) .WithMany(p => p.ArticleComments) .HasForeignKey(d => d.CommentId) .HasConstraintName("FK_dbo.ArticleComments_dbo.Comments_CommentId"); }); modelBuilder.Entity<VideoComment>(entity => { entity.HasKey(e => new { e.CommentId, e.VideoId }) .HasName("PK_dbo.VideoComments"); entity.HasIndex(e => e.VideoId) .HasName("IX_VideoId"); entity.HasIndex(e => e.CommentId) .HasName("IX_VideoCommentId"); entity.HasOne(d => d.Video) .WithMany(p => p.VideoComments) .HasForeignKey(d => d.VideoId) .HasConstraintName("FK_dbo.VideoComments_dbo.Videos_VideoId"); entity.HasOne(d => d.Comment) .WithMany(p => p.VideoComments) .HasForeignKey(d => d.CommentId) .HasConstraintName("FK_dbo.VideoComments_dbo.Comments_CommentId"); }); modelBuilder.Entity<EventComment>(entity => { entity.HasKey(e => new { e.CommentId, e.EventId }) .HasName("PK_dbo.EventComments"); entity.HasIndex(e => e.EventId) .HasName("IX_EventId"); entity.HasIndex(e => e.CommentId) .HasName("IX_EventCommentId"); entity.HasOne(d => d.Event) .WithMany(p => p.EventComments) .HasForeignKey(d => d.EventId) .HasConstraintName("FK_dbo.EventComments_dbo.Events_EventId"); entity.HasOne(d => d.Comment) .WithMany(p => p.EventComments) .HasForeignKey(d => d.CommentId) .HasConstraintName("FK_dbo.EventComments_dbo.Comments_CommentId"); }); } }
var article = new Article { Title = "Article A", Slug = "article_a", Description = "No Description" }; var comment = new Comment { CommentText = "It's great", User = "Sirwan" }; dbContext.ArticleComments.Add(new ArticleComment { Article = article, Comment = comment }); dbContext.SaveChanges(); var articleOne = dbContext.Articles .Include(article => article.ArticleComments) .ThenInclude(comment => comment.Comment) .First(article => article.Id == 1); var article1Comments = articleOne.ArticleComments.Select(x => x.Comment); Console.WriteLine(article1Comments.Count());
public class Comment { public int Id { get; set; } public string CommentText { get; set; } public string User { get; set; } // Article public virtual Article Article { get; set; } public int? ArticleId { get; set; } // Video public virtual Video Video { get; set; } public int? VideoId { get; set; } // Event public virtual Event Event { get; set; } public int? EventId { get; set; } } public class Article { public int Id { get; set; } public string Title { get; set; } public string Slug { get; set; } public string Description { get; set; } public virtual ICollection<Comment> Comments { get; set; } } public class Video { public int Id { get; set; } public string Url { get; set; } public string Description { get; set; } public virtual ICollection<Comment> Comments { get; set; } } public class Event { public int Id { get; set; } public string Name { get; set; } public DateTimeOffset? Start { get; set; } public DateTimeOffset? End { get; set; } public virtual ICollection<Comment> Comments { get; set; } } public class MyDbContext : DbContext { public DbSet<Article> Articles { get; set; } public DbSet<Video> Videos { get; set; } public DbSet<Event> Events { get; set; } public DbSet<Comment> Comments { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlite("Data Source=polymorphic.db"); }
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Comment>(entity => entity.HasCheckConstraint("CHECK_FKs", "(`ArticleId` IS NOT NULL) AND (`VideoId` IS NOT NULL) AND (`EventId` IS NOT NULL)")); }
var articles = dbContext.Articles .Include(x => x.Comments).Where(x => x.Id == 1); foreach (var article in articles) { Console.WriteLine($"{article.Title} - Comments: {article.Comments.Count}"); } var comment = dbContext.Comments.Include(x => x.Article) .FirstOrDefault(x => x.Id == 1); Console.WriteLine(comment?.Article.Title);
create table Employees ( Id int auto_increment primary key, FirstName text null, LastName text null, DateOfBirth timestamp not null );
public class Employee { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTimeOffset DateOfBirth { get; set; } } public class MyDbContext : DbContext { public DbSet<Employee> Employees { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder options) { options.UseMySQL(_configuration.GetConnectionString("DataConnection")); } }
اما در مدل EAV، خواص داینامیک را به درون جدول دومی منتقل خواهیم کرد:
create table EmployeeEav ( Id int auto_increment primary key ); create table EmployeeAttributes ( Id int auto_increment primary key, EmployeeId int not null, AttributeName text null, AttributeValue text null, constraint FK_EmployeeAttributes_EmployeeEav_EmployeeId foreign key (EmployeeId) references EmployeeEav (Id) on delete cascade ); create index IX_EmployeeAttributes_EmployeeId on EmployeeAttributes (EmployeeId);
تعریف جداول فوق نیز در Entity Framework به اینصورت خواهند بود:
public class EmployeeEav { public int Id { get; set; } public virtual ICollection<EmployeeAttribute> Attributes { get; set; } } public class EmployeeAttribute { public int Id { get; set; } public virtual EmployeeEav Employee { get; set; } public int EmployeeId { get; set; } public string AttributeName { get; set; } public string AttributeValue { get; set; } } public class MyDbContext : DbContext { public DbSet<EmployeeEav> EmployeeEav { get; set; } public DbSet<EmployeeAttribute> EmployeeAttributes { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder options) { options.UseMySQL(_configuration.GetConnectionString("DataConnection")); } }
SELECT `e`.`Id`, `e`.`DateOfBirth`, `e`.`FirstName`, `e`.`LastName` FROM `Employees` AS `e` WHERE `e`.`DateOfBirth` > @__endDate_0
var endDate = DateTimeOffset.Now.AddYears(Convert.ToInt32(-25)); var normalTypes = dbContext.Employees.Where(x => x.DateOfBirth > endDate).ToList();
SELECT MAX(CASE AttributeName WHEN 'FirstName' THEN AttributeValue END) AS FirstName, MAX(CASE AttributeName WHEN 'LastName' THEN AttributeValue END) AS LastName, MAX(CASE AttributeName WHEN 'DateOfBirth' THEN AttributeValue END) AS DateOfBirth FROM efcoresample.EmployeeAttributes WHERE EmployeeId IN (SELECT EmployeeId FROM efcoresample.EmployeeAttributes WHERE AttributeName = 'DateOfBirth' AND AttributeValue > DATE_SUB(CURRENT_DATE(), INTERVAL 25 YEAR)) AND AttributeName IN ('FirstName', 'LastName', 'DateOfBirth') GROUP BY EmployeeId;
string[] columnNames = {"FirstName", "LastName", "DateOfBirth"}; var employees = dbContext.EmployeeAttributes .Where(x => dbContext.EmployeeAttributes .Where(i => i.AttributeName == "DateOfBirth") .Select(eId => eId.EmployeeId).Contains(x.EmployeeId) && columnNames.Contains(x.AttributeName)) .GroupBy(x => x.EmployeeId) .Select(g => new { FirstName = g.Max(f => f.AttributeName == "FirstName" ? f.AttributeValue : ""), LastName = g.Max(f => f.AttributeName == "LastName"? f.AttributeValue : ""), DateOfBirth = g.Max(f => f.AttributeName == "DateOfBirth"? f.AttributeValue : ""), Id = g.Key }) .ToList() .Where(x => DateTime.ParseExact(x.DateOfBirth, "yyyy-MM-dd", CultureInfo.InvariantCulture) > DateTime.Now.AddYears(-25));
columns: [ { field: "IsAvailable", title: "موجود است", template: '<input type="checkbox" #= IsAvailable ? checked="checked" : "" # disabled="disabled" ></input>' } ]
<!--دریافت اطلاعات از منبع محلی--> <script id="javascriptTemplate" type="text/x-kendo-template"> <ul> # for (var i = 0; i < data.length; i++) { # <li>#= data[i] #</li> # } # </ul> </script> <div id="container1"></div> <script type="text/javascript"> $(function () { var data = ['User 1', 'User 2', 'User 3']; var template = kendo.template($("#javascriptTemplate").html()); var result = template(data); //Execute the template $("#container1").html(result); //Append the result }); </script>
namespace KendoUI04.Models { public class Product { public int Id { set; get; } public string Name { set; get; } public decimal Price { set; get; } public bool IsAvailable { set; get; } } }
using System.Collections.Generic; using System.Linq; using System.Web.Http; using KendoUI04.Models; namespace KendoUI04.Controllers { public class ProductsController : ApiController { public IEnumerable<Product> Get() { return ProductDataSource.LatestProducts.Take(10); } } }
<!--دریافت اطلاعات از سرور--> <div> <div id="container2"><ul></ul></div> </div> <script id="template1" type="text/x-kendo-template"> <li> #=Id# - #:Name# - #=kendo.toString(Price, "c")#</li> </script> <script type="text/javascript"> $(function () { var producatsTemplate1 = kendo.template($("#template1").html()); var productsDataSource = new kendo.data.DataSource({ transport: { read: { url: "api/products", dataType: "json", contentType: 'application/json; charset=utf-8', type: 'GET' } }, error: function (e) { alert(e.errorThrown); }, change: function () { $("#container2 > ul").html(kendo.render(producatsTemplate1, this.view())); } }); productsDataSource.read(); }); </script>
/// <reference path="jquery.min.js" /> /// <reference path="kendo.all.min.js" />
Tools menu –> Options -> Text Editor –> JavaScript –> Intellisense –> References