Bonjour,

j'essaie d'insérer des données sur une updatable view Oracle. Celle-ci contient un champ en provenance d'une seconde table
=> select t1.id, t2.b, t1.myvalue from t1 join tn;

En code first, j'ai trois classes C1, où n'est pas défini t2.b et les classes C2 et C3 qui héritent de C1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
[Table("T1")]
public class C1 : ...
{
 private string _id;
 private Int64 _myValue;
 
 public virtual string Id
 {
   get { return _id; }
   set { _id = value; OnPropertyChanged("Id");}
 }
 public virtual Int64 MyValue
 {
   get { return _myValue; }
   set { _myValue = value; OnPropertyChanged("MyValue");}
 }
}
 
public class C2 : C1
{
(...)
}
public class C3 : C1
{
(...)
}
 
public class C1Map : EntityTypeConfiguration<C1>
{
  public C1Map()
  {
            this.Map<C2>(a =>
            {
                a.Requires("B").HasValue("0");
            });
            this.Map<C3>(a =>
            {
                a.Requires("B").HasValue("1");
            });
  {
}
Quand j'essaie de créer un nouveau record dans la table T1 au travers de la classe C3, l'entity framework génère un insert avec une valeur 1 pour le champ "B" et j'ai un beau ORA-01733: virtual column not allowed here (c'est... juste un peu normal)

sans définir ce champ dans la classe C1, on ne sait pas faire de .Ignore (et de toute façon j'ai essayé et ça n'exclut pas la colonne du sql)
définir le champ "B" et y coller un [NotMapped] ne fonctionne pas non plus.


Comment faire pour exclure ce champ du SQL généré ???

Merci d'avance