<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ADO.NET</title><link>https://www.dotnetzone.gr:443/cs/forums/78/ShowForum.aspx</link><description>Θέματα σχετικά με την προσπέλαση δεδομένων μέσω του ADO.NET και του System.Data namespace</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: The property 'Id' is part of the object's key and cannot be changed. (EF4 &amp; STE)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59678.aspx</link><pubDate>Tue, 17 Aug 2010 20:33:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59678</guid><dc:creator>Μπλουγουράς Γιάννης</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59678.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=59678</wfw:commentRss><description>&lt;P&gt;Ευχαριστώ για την άμεση απάντηση,&lt;/P&gt;
&lt;P&gt;συμφωνώ με &amp;lt;&amp;lt;Προσωπικά, θα ήμουν υπέρ του ο μηχανισμός που θα αλλάζει το primary key να είναι εκτός του EF&amp;gt;&amp;gt;.&lt;BR&gt;θα το προσπαθήσω, μου φαίνετε ότι είναι πιο απλό να γράψω ένα update query με plain ADO .net command, και να παρακάμψω τελίως το EF.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Και πάλι ευχαριστώ για την απάντηση!&lt;/P&gt;</description></item><item><title>Απ: The property 'Id' is part of the object's key and cannot be changed. (EF4 &amp; STE)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59676.aspx</link><pubDate>Tue, 17 Aug 2010 19:23:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59676</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59676.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=59676</wfw:commentRss><description>&lt;P&gt;Καλησπέρα,&lt;/P&gt;
&lt;P&gt;Καταλαβαίνω το πρόβλημα, αλλά δεν νομίζω ότι υπάρχει workaround - η μηχανή του EF είναι "στημένη" να κάνει track τα entities με το primary key. Δεν νομίζω ότι θα μπορέσεις να κάνεις αλλαγές σε primary key - έστω και να αλλάξεις το template με τον κώδικα που το αποτρέπει - και να συνεχίσει το EF να μπορεί να κάνει track το entity.&lt;/P&gt;
&lt;P&gt;Προσωπικά, θα ήμουν υπέρ του ο μηχανισμός που θα αλλάζει το primary key να είναι εκτός του EF - η store procedure φαίνεται καλή ιδέα, αλλά θα πρέπει να προσέχεις&amp;nbsp;το entity να μην είναι στην μνήμη. Εναλακτικά, θα πρέπει να "κοροϊδέψεις", δειχνοντάς του μια άλλη ιδιότητα σαν primary key - κάτι τύπου auto-number - και να έχεις πλήρη έλεγχο της ιδιότητας που θα είναι το "πραγματικό" primary key στο κώδικά σου.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>The property 'Id' is part of the object's key and cannot be changed. (EF4 &amp; STE)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/59674.aspx</link><pubDate>Tue, 17 Aug 2010 18:12:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59674</guid><dc:creator>Μπλουγουράς Γιάννης</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/59674.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=59674</wfw:commentRss><description>&lt;P&gt;Καλησπέρα,&lt;/P&gt;
&lt;P&gt;κάνω την πρώτη μου προσπάθεια να δημιουργήσω ένα έργο με Entity Framework 4 και Self Tracking Entities.&lt;/P&gt;
&lt;P&gt;Όλα λειτουργούν κανονικά, το πρόβλημα μου όμως είναι ότι το Entity Framework&amp;nbsp; δεν υποστηρίζει την μεταβολή του πρωτεύοντος &amp;nbsp;κλειδιού.&lt;/P&gt;
&lt;P&gt;Όπως βλέπετε παρακάτω στον κώδικα που δημιουργεί το Τ4 πρότυπο, η αλλαγή του προτεύοντος κλειδιού δεν επιτρέπετε όταν η εγγραφή&lt;/P&gt;
&lt;P&gt;παρακολουθείται για αλλαγές και δεν είναι σε κατάσταση προς εισαγωγή.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataContract(IsReference = true)]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class EcrDevice: IObjectWithChangeTracker, INotifyPropertyChanged&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region Primitive Properties&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DataMember]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public short Id&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return _id; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (_id != value)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ChangeTracker.ChangeTrackingEnabled &amp;amp;&amp;amp; ChangeTracker.State != ObjectState.Added)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; throw new InvalidOperationException("The property 'Id' is part of the object's key and cannot be changed. Changes to key properties can only be made when the object is not being tracked or is in the Added state.");&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _id = value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnPropertyChanged("Id");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private short _id;&lt;/P&gt;
&lt;P&gt;Θα μπορούσε το ΕF να κρατάει την τιμή του προτεύοντος κλειδιού εσωτερικά της τάξης και να κάνει μια απλή ενημέρωση όπως παρακάτω&lt;/P&gt;
&lt;P&gt;Update EcrDevice SET &lt;A href="mailto:EcrDevice.Id=@Id"&gt;EcrDevice.Id=@Id&lt;/A&gt;,&amp;nbsp;&lt;A href="mailto:EcrDevice.Port=@PortNumber"&gt;EcrDevice.Port=@PortNumber&lt;/A&gt;&amp;nbsp;where &lt;A href="mailto:EcrDevice.Id=@PreviousId"&gt;EcrDevice.Id=@PreviousId&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Σκέφτομαι πως θα μπορούσα να κάνω χρήση Stored Proc με το EF για την ενημέρωση, αλλά δεν μου αρέσει&amp;nbsp;αυτή η&amp;nbsp;&amp;nbsp;προσέγγιση&lt;/P&gt;
&lt;P&gt;Κάθε βοήθεια για κάποιο Workaround είναι ευπρόσδεκτη&lt;/P&gt;
&lt;P&gt;Θα ήθελα να μην μπούμε στην διαδικασία να εξηγήσουμε γιατί μία εγγραφή χαρακτηρίζεται μοναδικά από το πρωτεύον&amp;nbsp;&amp;nbsp;κλειδι και δεν πρέπει να μπορούμε να το&amp;nbsp;μεταβάλουμε.&lt;/P&gt;
&lt;P&gt;Σας ευχαριστώ !&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item></channel></rss>