ic617是啥时候更新的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ic617是啥时候更新的相关的知识,希望对你有一定的参考价值。

参考技术A ic617是2017年更新的。
ic617安装方法:1. 软件下载,cadence官网已经不会提供免费的软件安装包,本文从互联网搜集到所用的软件,包括 Virtuoso 定制芯片设计工具套件IC617 ,多模式仿真工具MMSIM15,以及物理验证工具Calibre。2. 解压软件,软件安装包下载完成后拷贝到centos系统中,本文将所有文件放到home目录。3、接下来需要进行将安装包解压,所用到的压缩解压器为7za,但是centos默认不带p7zip压缩解压器;解决的方法有两种,用windows下的解压工具解压后再拷贝过来或者在centos下安装p7zip压缩解压器。4. 准备安装环境,在linux系统的软件有相互依赖的关系,像cadence这种大型软件所依赖的系统环境更加复杂一点,新手也已通过安装过程中的错误提示来补装环境(也就是俗称的软件/库),本文提供已经安装好cadence所依赖的环境(软件库)列表。

在 MVC 中仅更新对象的某些字段的最佳方法是啥?

【中文标题】在 MVC 中仅更新对象的某些字段的最佳方法是啥?【英文标题】:What is the best way to update only some fields of an object in MVC?在 MVC 中仅更新对象的某些字段的最佳方法是什么? 【发布时间】:2015-09-01 03:14:19 【问题描述】:

我正在尝试更新新闻帖子。该帖子有一个名为 Created 的日期字段,该字段在最初创建记录时填充。我在更新的时候没有包含这个,所以当使用下面的方法时,这个为空并且会抛出一个错误。

我正在使用 MVC 5 和实体框架 6

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id,Title,Summary,Content")] Post post) 
    if (ModelState.IsValid) 
        db.Entry(post).State = EntityState.Modified;
        db.SaveChanges();

        return RedirectToAction("Index");
    
    return View(post);

此方法确实有效,但似乎有点笨拙。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id,Title,Summary,Content")] Post post) 
    if (ModelState.IsValid) 
        var newsPost = db.Posts.Find(post.Id);
        if (newsPost == null)  return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
        newsPost.Title = post.Title;
        newsPost.Summary = post.Summary;
        newsPost.Content = post.Content;
        db.Entry(newsPost).State = EntityState.Modified;
        db.SaveChanges();

        return RedirectToAction("Index");
    
    return View(post);

这样做的最佳实践方法是什么?

谢谢!

【问题讨论】:

我相信使用像 AutoMapper 这样的东西可能是一种方法。 使用 EF6,您应该能够在保存之前使用db.Entry(post).State = EntityState.Modified;,后跟db.Entry(post).Property(x => x.Created).IsModified = false; 我会看看 ViewModel 模式 (geekswithblogs.net/michelotti/archive/2009/10/25/…)。编写视图模型,将其发送到您的 HttpGet 方法,发回 HttpPost 方法,验证,更新您的实体模型。正如 Kamo 所指出的,Automapper 非常适合这一点。然后你可以在你不想更新的字段上使用 Html.HiddenFor。 @SteveGreene,感谢您的评论。对于我不想修改的字段,我想避免使用 Html.HiddenFor,因为通过代理或浏览器插件等更改这些字段是微不足道的。 View Models 解决这个问题,这样你就不必传递隐藏字段了。 【参考方案1】:

EF 还有一个简单的内置“AutoMapper”,可以处理标量值。

public class PostViewModel()

     public string Id get;set;
     public string Title get;set;
     public string Summary get;set;
     public string Content get;set;


public ActionResult Edit(PostViewModel viewModel)

    if (ModelState.IsValid) 
        var newsPost = db.Posts.Find(post.Id);
        ...
        db.Entry(newsPost).CurrentValues.SetValues(viewModel);
        ...
    

【讨论】:

这真的是唯一的方法吗...对数据库的额外调用让我畏缩... 但是,这很简单。太好了。【参考方案2】:

我使用存储库方法。效果很好。 它复制不同的列。针对 PUT 的 PATCH 排序

public void CopyUpdate<T> (T modelorig, T model) where T : class
    
        _context.Entry(model).CurrentValues.SetValues(modelorig);

        _context.Set<T>().Add(model);
        _context.Entry(model).State = EntityState.Modified;
        _context.SaveChanges();
    

【讨论】:

【参考方案3】:

假设你想坚持休息,这样做的“正确”方法。是用HttpPatch

https://docs.microsoft.com/en-us/aspnet/core/web-api/jsonpatch?view=aspnetcore-6.0

[HttpPatch]
[ValidateAntiForgeryToken]
public async Task<ActionResult> PatchAsync([FromBody] JsonPatchDocument<Post> patchDoc, int id) 
    
    var post = db.Find(id);
    patchDoc.ApplyTo(post, ModelState);

    if (!ModelState.IsValid)
    
        return BadRequest(ModelState);
    

    await db.SaveChangesAsync();

    return new ObjectResult(post);

【讨论】:

以上是关于ic617是啥时候更新的的主要内容,如果未能解决你的问题,请参考以下文章

Guard Ring的制作(基于IC617)

ic617自带库器件二极管总是没有模型

求助 关于 启动IC617时报错BadAtom

cadence IC617在设置仿真模型时点开Model Libraries Setup时,不知道设置的.scs在哪?

64位ubuntu装cadence ic610的问题

ICS 在定期日历事件中更新这个和未来